【发布时间】:2011-09-18 06:27:34
【问题描述】:
显然,仍然允许 const 成员函数更改类成员指向的数据。这是我的意思的一个例子:
class MyClass
{
public:
MyClass();
int getSomething() const;
private:
int* data;
};
// ... data = new int[10];, or whatever
int MyClass::getSomething() const
{
data[4] = 3; // this is allowed, even those the function is const
return data[4];
}
如果不允许这样做,我更愿意。我应该如何定义“数据”,以便不允许“getSomething() const”更改它? (但允许非常量函数更改它。)是否有某种“最佳实践”?也许是 std::vector?
【问题讨论】:
-
是的,事实证明 const 成员函数并没有你想象的那么有用。
-
@David:只有当他使用
std::vector<int>而不是int*时,它才会有用。