C++学习笔记 第二十课 初始化列表的使用

痞子三分冷 提交于 2020-02-22 22:58:50

学习笔记内容来自:狄泰软件学院 唐佐林老师 的视频,十分感谢您的指导

初始化成员列表

1.初始化成员列表在构造函数的函数体之前
2.初始化成员列表的初始化顺序跟写代码的顺序无关,只跟成员的声明顺序有关

类中的const成员

1.类中的const成员的初始化只能在构造函数的初始化列表中进行初始化
2.类中的const成员会被分配空间
3.类中的const成员的本质是只读变量

注意
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;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!