저는 C++에서 잠시 떨어져 있었고 정의 된 클래스의 private 멤버 변수 (있는 경우)의 두 기본 생성자 초기화 사이의 차이를 확인하려고합니다. 구현은 별도의 파일에 있지만 클래스 정의는 헤더 파일에 있습니다. 모든 private 멤버 변수는 "0"또는 의미없는 값으로 초기화되어야합니다.Constructor (C++)의 개인 멤버 초기화 차이점
참고
int 데이터 [MAX_SIZE] 고정 크기가 시간 배열을 컴파일한다. int used : 배열의 인덱스 추적기입니다.
// Default Constructor
IntSet::IntSet() : used(0)
{
data[MAX_SIZE-1] = {0};
}
인가가 : 완전히 다른 구문을
// Default Constructor
IntSet::IntSet()
{
data[MAX_SIZE-1] = {0}
used = 0;
}
좀 레거시 코드를 빗질하고있어 찾는 :
일반적으로 나는 다음과 같은 방법으로 멤버를 초기화에 익숙해있어, 말하기 최종 결과의 차이점은 무엇입니까?
두 번째 발췌 문장에서와 같이 [이니셜 라이저 목록] (http://en.cppreference.com/w/cpp/language/initializer_list)을 선호하십시오. VLAs는 C++에서 허용되지 않습니다. – Ron
여기에 VLA가 사용되지 않습니다. 모든 일은 '데이터'의 마지막 값을 0으로 설정하는 것입니다. – user4581301