{

왜냐하면 멤버 변수의 정의순으로 초기화 하기 때문이다.

돌려 보면 무엇이 문제 인지  알 수 있을 것이다. 이 문제는 KGCA15기 허재석(ㅋㅋ)이 맞추었던 것으로 기억한다.


정확하게 문제를 찝어 줘~

name의 생성자에서 full_name을 제일 먼저 생성하고, 값들을 체운다. 왜냐하면 멤버 데이터의 선언은 full_name_이 제일 먼저이기 때문이다. 이 때, 다른 멤버 변수는 아직 생성된 것이 아니므로, 그 값을 이용하여, 값을 초기화 하려고 하니 에러가 나는 것이다.

Effective C++ 이나 Excetional C++ 에 자세히 나오니 패스
}

'책 정리 > C++ Coding Standards : C++ 코딩의 정석' 카테고리의 다른 글

항목 52 : 일관된 방식으로 복사하고 제거하라. ( Copy and destroy consistently. )  (0) 2009.04.03
항목 51 : 디스트럭터 재할당 그리고 swap은 절대 실패하지 않는다. ( Destructors, deallocation, and swap never fail. )  (0) 2009.04.03
항목 50 : 기반 클래스 디스트럭터는 공용과 가상 또는 보호와 비가상으로 만들어라. ( Make base class destructors public and virtual, or protected and nonvirtual. )  (0) 2009.04.03
항목 49 : 컨스트럭터와 디스트럭터에서는 가상 함수의 호출을 피하라. ( Avoid calling virtual functions in constructors and destructors. )  (0) 2009.04.03
항목 48 : 컨스트럭터 내에서 할당 대신 초기화를 사용 하라. ( Prefer initialization to assignment in constructors. )  (0) 2009.04.01
항목 46 : 특정한 클래스에 맞는 new를 제공한다면, 모든 표준 형식을 제공해야 한다. ( If you provide any class-specific new, provide all of the standard forms (plain, in-place, and nothrow). )  (0) 2009.04.01
항목 45 : new와 delete는 항상 같이 제공하라. ( Always provide new and delete together. )  (0) 2009.04.01
항목 44 : 비멤버 함수를 활용하라. ( Prefer writing nonmember nonfriend functions. )  (0) 2009.03.31
항목 43 : Pimpl을 적당히 활용하라. ( Pimpl judiciously. )  (0) 2009.03.31
항목 42 : 내부의 것은 너무 노출시키지 말라. ( Don’t give away your internals. )  (0) 2009.03.31
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기