const对象const成员函数
来源:互联网 发布:java matcher group 编辑:程序博客网 时间:2024/04/30 15:39
转自http://blog.csdn.net/candcplusplus/article/details/8918469
const对象
如果你想定义一个永远都不会改变的类对象,可以像下面这样定义一个const对象
const CBox standard(10.0,10.0,10.0);
standard对象的成员变量的值将永不会改变。编译器为了保证const对象不会改变,不允许调用const对象的非const成员函数。即使这个非const成员函数确实没有改变任何成员变量的值。
const对象的原理是把对象的this指针都变成指向const对象的指针(指针指向的内容不允许改变)。而调用对象的成员函数时隐含有一个this指针参数。而指向const对象的指针是不能隐式转换成指向非const对象的指针的。普通成员函数隐含的this指针参数为指向非const对象的指针。所以调用const对象的成员函数将导致编译器尝试将指向const对象的指针转换为指向非const对象指针,这是不允许的。所以通不过编译。
const成员函数
1.const成员函数承诺不会改变对象的成员变量值。所以在const成员函数内不允许有改变成员变量值的操作。也不允许调用对象的非const成员函数,只能调用const成员函数。
2.const成员函数的声明和定义都必须使用const关键字(如果定义和实现是分开的),紧跟在函数参数列表后的反括号之后。就像下面这样:
- class CBox
- {
- public:
- explicit CBox(double lv = 1.0,double bv = 1.0,double hv = 1.0)
- {
- //...
- }
- double Volume() const;
- private:
- double m_Length;
- double m_Width;
- double m_Height;
- };
- double CBox::Volume() const
- {
- return m_Length*m_Height;
- }
建议:定义类时,最好把不会改变成类员变量的成员函数都定义为const函数
- const对象const成员函数
- const对象调用非const成员函数
- const成员函数与const对象
- const对象和const成员函数
- const对象与const成员函数
- const对象和const成员函数
- const成员函数与const对象
- const对象,const成员函数总结
- const对象和const成员函数
- const修饰成员函数const修饰对象
- const 对象和 const 成员函数
- const对象和const成员函数
- this指针?const函数?const对象成员?
- const成员函数和对象
- const成员函数、const类对象、mutable数据成员
- const变量、const指针、const参数、const对象、const成员函数
- Const---【const对象和const成员函数及const成员属性总结】
- 为什么const对象只能调用const成员函数,而不能调用非const成员函数?
- Jquery 动态生成表单 并将表单数据 批量通过Ajax插入到数据库
- Jquery 的outerHeight和outerHeightWidth
- 解决Premature end of script headers
- 一转眼工作即将一年
- 500 Internal Server Error解决方法
- const对象const成员函数
- iframe子父页面调用
- java容器类
- 自动设置ifream的大小
- python第一个脚本,模拟浏览器下载文件
- oracle 正则表达式
- jQuery中对 input 控件的操作
- 五险一金,终于懂了!
- 消息机4_B