C++笔记五:const对象总结
来源:互联网 发布:vb 文本框内字体颜色 编辑:程序博客网 时间:2024/06/14 18:55
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函数。
- C++笔记五:const对象总结
- C++ Primer 笔记之const总结
- C++const用法总结
- C++const用法总结
- C++const用法总结
- C++const用法总结
- C++const用法总结
- C++const用法总结
- C++const用法总结
- c++->const用法总结
- C++const总结
- C++:const用法总结
- C++const用法总结
- C++const总结
- C++-const 总结
- C/C++ const总结
- <C++> const总结
- c const 笔记
- 玩转HBase: Coprocessor Endpoint (2):coprocessorProxy和coprocessorExec的合理运用
- Linux 2.6.36版本内核分析之task_struct
- Linux文件相关操作
- DOS学习--DOS系统的安装和熟悉
- 设计模式-创建型模式-抽象工厂
- C++笔记五:const对象总结
- Phonegap 1.9.0 _NSURLIsExcludedFromBackupKey error
- JobTracker dump内存记录
- c#、WPF字符串,color,brush之间的转换
- JobTracker心跳优化
- Linux系统监控
- DataKeyField
- Ubuntu安装Java JDK6最简单的方法
- Reference语义实现