스물 수업 연구 노트를 사용하는 C ++ 초기화 목록

연구 노트의 내용에서 : 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;
}
게시 14 개 원래 기사 · 원의 칭찬 0 · 조회수 94

추천

출처blog.csdn.net/u012321968/article/details/104450426