내가 CONST 회원이 명시 적으로 intialized해야 들었 컴파일하지만 나를 위해 다음과 같은 컴파일되지 않은 : 당신의 천국 '이후const 멤버는 명시 적으로 초기화하지만
int main()
{
someClass obj;
return 0;
}
:
class someClass
{
int const x;
};
int main()
{
return 0;
}
내가 CONST 회원이 명시 적으로 intialized해야 들었 컴파일하지만 나를 위해 다음과 같은 컴파일되지 않은 : 당신의 천국 '이후const 멤버는 명시 적으로 초기화하지만
int main()
{
someClass obj;
return 0;
}
:
class someClass
{
int const x;
};
int main()
{
return 0;
}
클래스에 const 한정 멤버 변수가있는 경우 해당 클래스에 대해 정의 된 모든 생성자에 대해 해당 변수는 생성자 이니셜 라이저 목록에서 초기화해야합니다. 정의 된 생성자가 const 한정 멤버 변수를 초기화하지 않으면 프로그램이 잘못 작성됩니다.
예제 코드에서 someClass
에는 사용자가 선언 한 생성자가 없으므로 암시 적으로 선언 된 기본 생성자가 있습니다. 그러나 해당 생성자가 사용되지 않으면 정의되지 않습니다. someClass
개체를 인스턴스화하지 않으므로 생성자는 사용되지 않습니다. 따라서 예제 코드에는 오류가 없습니다.
당신은 const 멤버를 초기화
class someClass
{
someClass() { } // error, does not initialize const-qualified x
int const x;
};
를 클래스에 대한 생성자를 정의하지했다거나 someClass
의 인스턴스를 인스턴스화한다면 (암시 적으로 선언 된 기본 생성자를 야기하는 정의 할 경우), 프로그램이 잘못 형성 될 수 있습니다.
이 시도 개체를 인스턴스화하지 않으면 컴파일러에서 오류가 발생하지 않습니다. x
을 초기화하는 올바른 방법을 알고있을 것입니다.
class someClass
{
int const x;
public:
someClass():x(10){}
};
컴파일러 버전은 무엇입니까? – sukru
최신 버전의 g ++. – user383352