멤버 이니셜라이저문법 : const 멤버를 초기화 하는 것이 가능!
class Student
{
const int id;
int age;
public:
Student(int _id, int _age) : id(_id)
{
age=_age;
}
};
생성자 : id(_id)
멤버변수 id를 매개변수 _id로 초기화하라!
이 방법이 아니라
Student(int _id, int _age)
{
id = _id;
age = _age;
}
로 초기화 하면 당연히 에러가 뜬다!!
객체의 생성순서는
1. 메모리 할당
2. 초기화 인데,
객체가 생성당시 쓰레기 값으로 이미 초기화 된 것을,
생성자로 다시 초기화 하려고 하면서 문제가 발생한다!!
따라서 const멤버 변수를 초기화 하기 위해서는
반드시 위의
멤버 이니셜라이저! 라는 문법을 이용할것!!
'Language > C++' 카테고리의 다른 글
복사생성자가 호출되는 시점 (0) | 2015.03.09 |
---|---|
const 함수 및 const 객체 특징, static 멤버의 특징 (0) | 2015.03.09 |
생성자 내에서 동적할당을 한다면?? (0) | 2015.03.09 |
[c++] 항상 헷갈리는 const 위치에 따른 쓰임새 차이 (const char , char const) (0) | 2015.02.17 |
c++ literal class (c++11) (0) | 2015.02.13 |