c++ primer笔记 将关键字 const 加在形参表之后,就可以将成员函数声明为常量:

来源:互联网 发布:电子阅读器知乎 编辑:程序博客网 时间:2024/06/05 20:46

将关键字 const 加在形参表之后,就可以将成员函数声明为常量:
double avg_price() const;
 
const 成员不能改变其所操作的对象的数据成员。const 必须同时出现在声
明和定义中,若只出现在其中一处,就会出现一个编译时错误。

 

可以在类定义体内部指定一个成员为 inline,作为其声明的一部分。或者,
也可以在类定义外部的函数定义上指定 inline。在声明和定义处指定 inline
都是合法的。在类的外部定义 inline 的一个好处是可以使得类比较容易阅读。 

 

从 const 成员函数返回 *this
在普通的非 const 成员函数中,this 的类型是一个指向类类型的 const
指针(第 4.2.5 节)。可以改变 this 所指向的值,但不能改变 this 所保存
的地址。在 const 成员函数中,this 的类型是一个指向 const 类类型对象的
const 指针。 既不能改变 this 所指向的对象, 也不能改变 this 所保存的地址。 
 
不能从 const 成员函数返回指向类对象的普通引用。const 成
员函数只能返回 *this 作为一个 const 引用。

 

可变数据成员
有时(但不是很经常),我们希望类的数据成员(甚至在 const 成员函数
内)可以修改。这可以通过将它们声明为 mutable 来实现。
 
562
可变数据成员(mutable data member)永远都不能为 const,甚至当它是
const 对象的成员时也如此。因此,const 成员函数可以改变 mutable 成员。
要将数据成员声明为可变的,必须将关键字 mutable 放在成员声明之前:
     class Screen {
     public:
     // interface member functions
     private:
         mutable size_t access_ctr; // may change in a const members
         // other data members as before
      };

原创粉丝点击