深入C++之const对象行为

来源:互联网 发布:php开发实战权威指南 编辑:程序博客网 时间:2024/05/24 11:14
const成员函数:const 修饰函数为类成员函数特有,实际上是对 const对象的限制。

理解 const 对象

const 对象是为了保证对象的成员数据在生命期内不被改变,这时它只能调用 const成员函数,而且调用成员函数时传递的是指向 const对象的const 指针this(const classType* const this),所以可以引出:

const成员函数不能改变其成员数据(当然有改变的方法),可见这里隐含着在成员函数中对数据成员的操作是通过this进行之意。特别返回对象或成员时,必须保证返回后也不能改变其数据,当然能够对其进行改变的只有 ref,ptr两种方式,所以返回对象本身或其成员的引用或指针时,必须是 const类型的。

另外极为主要的一点,如果类成员拥有指针成员,type* ptr;注意到const修饰的对象其指针成员等同于:type* const ptr;这意味着指针所指仍能够改变的。

一般实例调用成员函数时传递的this类型为,classtype * const this.

改变 const对象数据的两种方法,,即某个数据成员可以在 const函数内进行修改:
1 常量转换(ClassTy*)this ,或者const_cast<ClassTy*>this
2 对允许改变的对象成员数据声明为 mutable,称为易变的、可变的的。

修2015-7-28:增加const对象成员指针部分,一般成员this类型
0 0