作者:鲸90830
链接:https://www.cnblogs.com/whale90830/p/10542361.html 1) const 对象的一般形式
- 类型名 const 对象名[(构造实参表列)];
- const 类型名 对象名[(构造实参表列)];
注意:常对象必须要有初值(因为以后不能改值了)。
[h3]2) 限定作用:[/h3]
定义为const的对象的所有数据成员的值都不能被修改。
凡出现调用非const的成员函数,将出现编译错误。但构造函数除外。
- Time const t1(12,34,46); // t1是常对象
- t1.set_Time(); // 编译错误PE, 非const成员函数
- t2.show_Time(); // 错误,非const成员函数
复制代码 [h3]3) mutable成员[/h3]
对数据成员声明为mutable(易变的)时,即使是const对象,仍然可以修改该数据成员值。
[h2]常对象成员[/h2][h2]1)常数据成员[/h2]
使用const说明的数据成员称为常数据成员,其值是不能改变的。
如果在一个类中说明了常数据成员,那么构造函数就只能通过初始化列表对该数据成员进行初始化,而任何其他函数都不能对该成员赋值。
- class Time
- {
- const int hour; // 声明hour为常数据成员
- Time(int h):hour(h){} // 通过参数初始化表对常数据成员hour初始化
- };
- class Time
- {
- const int hour; // 声明hour为常数据成员
- Time(int h)
- {
- hour = h; // 错误
- }
- };
复制代码 例3.30 常数据成员举例。
[code]#include
class Date {
public:
Date(int y,int m,int d);
void showDate();
const int &r;
private:
const int year;
const int month;
const int day;
};
Date::Date(int y,int m,int d):year(y),month(m),day(d),r(year){ }
inline void Date::showDate()
{
cout |
|