深入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
- 深入C++之const对象行为
- C深入const作用
- C++const函数和const对象
- 【C++】const对象和const成员
- C++之const对象只能调用const成员函数---补充(18)《More Effective C++》
- 深入探索C++对象模型之虚拟函数是否设置为const
- c/c++之const
- C语言之const
- C语言之const
- C-关键字之const
- C基础之CONST
- C++const对象和 引用
- 3.7对象与const【C++】
- 深入理解C语言中的const
- java之旅之对象的行为
- C++基础之const对象
- Redis深入之对象
- C语言修饰词之const
- Doing Homework again(区间选点)
- iOS两个强制旋转屏幕的方法
- eclipse环境 Cannot run program "C:\Java\jdk1.6.0_02\bin\javaw.exe" (in directory "D:\project\SDK"): Cr
- after Normal block(#47) at 0x001D3908 错误的一次解决经历
- Java中属性和字段的区别
- 深入C++之const对象行为
- JVM加载class文件的原理
- Populating Next Right Pointers in Each Node II
- selendroid
- HDU 月之数
- SpringMVC接受Form传值和与jsp传值
- string data,right truncation
- install4j 打包 spark(1)-install4j-6.0
- spring事务管理