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- 초기화 - 대신
이 기사가 도움이 생각? 에 오신 것을 환영합니다 엄지 손가락은 더 많은 사람들과 공유 할 수 있습니다.
더 업데이트 된 기사를 읽고, 객체 지향 사고의 마이크로 채널 대중 번호로하시기 바랍니다에주의 []