연구 노트의 내용에서 : Ditai 소프트웨어 대학 Tangzuo 린 선생님의 비디오, 당신의 지침을 주셔서 감사합니다
초기화 멤버 목록
1. 초기화 생성자의의 몸 전 구성원 목록
초기화 시퀀스 2. 초기화 순서의 구성원 목록 만의 구성원의 순서에 대한 문, 코드를 작성 함께 할 수 없다
const 멤버 클래스
const 멤버 1. 초기화 클래스 만 초기화 목록 생성자에서 초기화
클래스는 공간이 할당됩니다 CONST 부재 (2)
자연 CONST 회원 3. 클래스는 읽기 전용 변수
주
1. 컴파일러는 직접 심볼 테이블이 진정한 의미에서 일정하게 입력 할 수 없습니다, 따라서 CONST 멤버의 초기 값을 얻을 수없고.
2. 실행 전에 생성자의 본체는, 객체가 생성되어, 생성자 함수 본문 만의 각종 부재의 객체를 초기화
샘플 프로그램 :
class School
{
private:
const int ID;
const string name;
public:
//执行的顺序是先给ID初始化,再给name初始化,因为ID先声明,name后声明
School():name("GDUT"),ID(66666)
{
}
void setID(int id)
{
int& p = const_cast<int&>(ID);
p = id;
}
int getID()const
{
return this->ID;
}
};
int main()
{
School s;
printf("s.ID = %d\n",s.getID());//66666
s.setID(99999);
printf("s.ID = %d\n",s.getID());//99999,说明s.ID是只读变量而不是真正的常量
return 0;
}