클래스 초기화 초기화 데이터 멤버 내에서 사용 : C ++ 핵심 원칙 C.45

C.45 : 마에만 데이터 멤버를 초기화하는 기본 생성자를 정의하지; 대신 멤버 이니셜 라이저 클래스의 사용

C.45 : 안 초기화에만 기본 생성자 데이터 멤버, 사용 클래스 멤버 이니셜 라이저 내

 

 

이유 (이유)

최강의 멤버 이니셜 라이저를 사용하면 컴파일러는 당신을위한 기능을 생성 할 수 있습니다. 컴파일러 생성 기능은 더 효율적일 수있다.

컴파일러는 당신을위한 기능을 생성 할 수있는 클래스 초기화 내에서 사용하십시오. 컴파일러는 더 높은 효율의 함수를 생성한다.

 

 

예 나쁜 (네가티브 샘플)

class X1 { // BAD: doesn't use member initializers
    string s;
    int i;
public:
    X1() :s{"default"}, i{1} { }
    // ...
};

 

 

실시 예 (실시 예)

class X2 {
    string s = "default";
    int i = 1;
public:
    // use compiler-generated default constructor
    // ...
};

 

 

시행 (제안)

(단순)을 기본 생성자는 상수 단지 초기화 멤버 변수보다 더 많은 일을해야한다.

더 많은 작업을 수행하기 위해 일정한 데이터 멤버를 초기화해야 기본 생성자를 사용하는 것보다 (단순).

 

번역기의 참고 : 거의 과잉을 의미한다.

 

 

 

설명 링크

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c45-dont-define-a-default-constructor-that-only-initializes-data-members-use-in-class-member- 초기화 - 대신

 


 

이 기사가 도움이 생각? 에 오신 것을 환영합니다 엄지 손가락은 더 많은 사람들과 공유 할 수 있습니다.

더 업데이트 된 기사를 읽고, 객체 지향 사고의 마이크로 채널 대중 번호로하시기 바랍니다에주의 []

게시 된 408 개 원래 기사 · 원 찬양 653 · 전망 290 000 +

추천

출처blog.csdn.net/craftsman1970/article/details/104482373