항목 4: 객체 초기화

Oak_Cassia·2022년 10월 2일
0

배열은 각 원소 초기화 보장 X
vector는 보장

모든 객체를 사용 전에 초기화하자

  • 기본 타입은 사용전에 초기화를 한다
  • 멤버는 멤버 이니셜라이저 사용
    • 멤버의 생성자 인자로 전달
    • 하지만 기본 타입은 초기화와 대입의 비용 차이가 없다.
      • 상수와 참조자는 이니셜라이저에서 초기화
    • 생성자도 많고 변수도 많아 가독성이 떨어지면?
      • 대입 가능한 것은 별도의 함수로 빼내어 호출

초기화 순서

  1. 부모 클래스는 자식 클래스보다 먼저
  2. 클래스 멤버는 선언된 순서로 초기화
    • 이니셜라이저 리스트에서 순서가 달라도 위 법칙 따름

비지역 정적 객체

  1. 컴파일된 소스파일이 2개 이상
  2. 각 소스 파일에 비지역 정적객체 존재

한쪽이 초기화 진행되면서 다른쪽을 사용할 때
초기화 되었는지 어떻게 알 것인가?

  • 초기화 순서는 정해져 있지 않다.
  • 지역 정적 객체로 바꾸자
    • 지역정적객체는 함수 호출 때 정의에 최초로 닿으면 초기화
    • 초기화된 객체의 참조자를 반환하게 하자
    • 반환 함수가 호출될 일이 없으면 객체의 생성 소멸 비용 생기지 않게
profile
rust로 뭐할까

0개의 댓글