const int id; //학번
의 방식으로 const키워드를 쓰는 것이 좋다.
하지만 다음과 같이 프로그래밍을 할 경우, 컴파일에서 오류가 발생하게 된다.
#include <iostream> class Student Kim.ShowData(); } |
오류를 살펴보자.
우리가 객체를 생성할 때 객체의 생성순서중 첫번째 단계는 '메모리 할당'이다.
이때 객체의 멤버 변수를 위한 메모리 공간도 할당되면서, id 값은 쓰레기 값으로 할당될 것이다.
따라서 이미 한번 초기화 되었으므로 생성자를 통한 초기화는 허용되지 않는다. 값의 변경으로 인식하기 때문이다.
이때 해결책!!
"멤버 이니셜라이저(member initializer)"이다.!
이것을 사용하면 const 멤버 변수를 초기화 하는 것이 가능하다.
Student(....) : id(_id)
=> "멤버 변수 id를 매개 변수 _id로 초기화하라"
둘 이상의 const 멤버도 ,(콤마) 연산자를 이용해서 구분 지어 초기화가 가능하다.
수정예제는 다음과 같다.
#include <iostream> class Student Kim.ShowData(); } |
참고: 열혈강의 c++
'Language > C++' 카테고리의 다른 글
static 멤버변수 / 멤버함수(클래스 변수, 클래스 함수) (0) | 2011.03.07 |
---|---|
const 멤버 함수 / const 객체 (1) | 2011.03.07 |
복사생성자가 호출되는 시점 (0) | 2011.03.07 |
깊은 복사(Deep Copy) ..(const Person& p) 명시적 정의 (0) | 2011.03.07 |
객체 포인터 배열 (0) | 2011.03.04 |