回复 7楼 枫林火山
总结一下吧: 不纠结了 感觉自己钻了牛角尖
在使用C++语言开发中,如果我们希望某一个对象在定义之后不被错误的修改,我们可以将这个对象声明为const对象,这样这个对象的数据成员就不可以被更改。
1.定义const对象
const 类名 对象名;
类名 const 对象名;
1)定义类对象时可以将其指定为const对象。定义后const对象不能再被修改;
2)const对象不能调用非const类型的成员函数。
在非const成员函数内部,有可能会对对象的数据成员进行修改,比如setHour()修改了对象的Hour值。而const类型的成员函数是不会修改对象的数据成员的。
const数据成员
1.const数据成员
在类内部使用const关键字来声明const数据成员。const数据成员的值不能被修改。
const int m_nNum;//定义了一个const数据成员
初始化时比较特殊,只能通过初始化列表初始化。不能在构造函数里赋值。
2.初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。
初始化列表可以为数据成员初始化,不仅仅只是const数据成员。
我们在构造函数外面添加了初始化列表,这个列表里面为const成员m_nNum赋了初始值10,如果我们有多个构造函数,必须在每一个构造函数外面都对这个const成员添加初始化列表初始化,包括复制构造函数。
const成员函数
1.const成员函数只能被const对象引用;
2.const成员函数内可以引用const数据成员,也可以引用非const数据成员,但不能修改非const数据成员的值,也不能调用非const成员函数;
3.const成员函数在声明和定义的时候都必须加上const。
[此贴子已经被作者于2018-4-5 11:55编辑过]