C++ - 常量成员函数的含义
来源:互联网 发布:c语言string什么意思 编辑:程序博客网 时间:2024/05/24 06:45
在类X的非常量成员函数中,this指针的类型为X*const。也就是说,它是指向非常量X的常量指针。而在类X的常量成员函数中,this的类型为constX *const。也就是说,是指向常量X的常量指针。这就是常量成员函数和非常量成员函数的区别。
对成员函数的this指针类型加上常量修饰符,就可以解释函数重载解析是符合区分一个成员函数的常量和非常量版本的。
有时候一个真的应该被声明为常量的成员函数必须要修改其对象,这种情形的正确方式是将有关数据成员声明为mutable;不要试图去在此常量函数中,对this进行const cast!!!
class X
{
private:
static int expensiveOperation();
int *buffer_;
bool isComputed_;
int computedValue_;
public:
X():buffer_(0),isComputed_(false)
{}
//...
void setBuffer()
{
int *tmp = new int[MAX];
delete[] buffer_;
buffer_ = tmp;
}
void modifyBuffer(int index,int value) const //相当不厚道!!!
{
buffer_[index] = value;
}
int getValue() const
{
if(!isComputed)
computedValue_ = expensiveOperation(); //错误
isComputed_ = true; //错误
return computedValue_;
}
int TrygetValue() const
{
if(!isComputed){
X * const aThis = const_cast<X * const>(this);//!!!糟糕的念头
aThis ->computedValue_ = expensiveOperation();
isComputed_ = true;
}
return computedValue_;
}
};
不少精彩的例子详见:C++必知必会(C++ common knowledge)-----条款10 常量成员函数的含义
- C++-必知必会_常量成员函数的含义(条款10)
- C++ - 常量成员函数的含义
- C++必知必会之(10)常量成员函数的含义
- C++的常量成员函数
- 常量对象、常量成员函数、常量成员函数的非常量重载版本。
- 常量成员函数限定的是什么?
- 详解成员函数的常量性
- C++类的常量对象与常量成员函数
- 成员函数后面加const的含义
- 常量成员函数
- 常量成员函数
- const常量成员函数
- 常量成员函数
- 成员函数常量
- 常量成员函数
- 常量成员函数(const)
- 常量成员函数
- c++常量成员函数
- MyEclipse快捷键大全,你知道多少?
- struts spring 整合
- 软件开发的终极目的是普及应用
- 夜间的胡思乱想
- winform与javascript
- C++ - 常量成员函数的含义
- c++ - 编译器会在类中放东西 & 使用抽象数据
- 软件架构师应该知道的97件事 笔记(二)
- Ext.window把mask加到父窗口上
- Flex改变图片或控件的层次关系
- 关于Ubuntu 10.04下编译BlueZ错误
- 终于可以不用radmin了
- 人们对IPv6的两大误解
- DAPM之二:audio paths与dapm kcontrol