C++ const 的使用

论坛 期权论坛 期权     
C语言与C++编程   2019-6-9 21:24   3298   0
作者:鲸90830
链接:https://www.cnblogs.com/whale90830/p/10542361.html
1) const 对象的一般形式

  • 类型名 const 对象名[(构造实参表列)];
  • const 类型名 对象名[(构造实参表列)];

注意:常对象必须要有初值(因为以后不能改值了)。

[h3]2) 限定作用:[/h3]
定义为const的对象的所有数据成员的值都不能被修改。

凡出现调用非const的成员函数,将出现编译错误。但构造函数除外。
  1. Time const t1(12,34,46); // t1是常对象
  2. t1.set_Time(); // 编译错误PE, 非const成员函数
  3. t2.show_Time(); // 错误,非const成员函数
复制代码
[h3]3) mutable成员[/h3]
对数据成员声明为mutable(易变的)时,即使是const对象,仍然可以修改该数据成员值。
[h2]常对象成员[/h2][h2]1)常数据成员[/h2]
使用const说明的数据成员称为常数据成员,其值是不能改变的。

如果在一个类中说明了常数据成员,那么构造函数就只能通过初始化列表对该数据成员进行初始化,而任何其他函数都不能对该成员赋值。
  1. class Time
  2. {
  3.     const int hour; // 声明hour为常数据成员
  4.     Time(int h):hour(h){} // 通过参数初始化表对常数据成员hour初始化
  5. };
  6. class Time
  7. {
  8.     const int hour; // 声明hour为常数据成员
  9.     Time(int h)
  10.     {
  11.         hour = h; // 错误
  12.     }
  13. };
复制代码
例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
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:200
帖子:40
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP