学习笔记内容来自:狄泰软件学院 唐佐林老师 的视频,十分感谢您的指导
初始化成员列表
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;
}
来源:CSDN
作者:苏瓜皮
链接:https://blog.csdn.net/u012321968/article/details/104450426