请问这里使用mutable是否合适:
#include <iostream>
class Base
{
protected:
int x;
public:
virtual void NoMod() const
{
std::cout << x << std::endl;
}
void Draw() const
{
this->NoMod();
}
};
class Derive : public Base
{
private:
mutable int y;
public:
void NoMod() const
{
y = 5;
}
};
int main()
{
Derive derive;
// Test virtual with derive
derive.Draw();
return 0;
}
基类是第 3 方库。我正在扩展它以提供我自己的 NoMod()。库原始 NoMod() 声明为常量。
我的NoMod()与Base不同的是,它需要修改自己的成员变量。
因此,为了让我自己的 NoMod() 编译并在调用 Draw() 时被调用,我必须
1) 作为常量实现 Derive::NoMod()
2) 使我的 int y 可变。
这是我能做的最好的了吗?
最佳答案
这很难说,因为您没有提供任何关于 y
指的是什么或它是如何使用的上下文。
一般来说,mutable
仅适用于更改可变变量不会更改对象的实际“值”的情况。例如,当我为 C 风格的字符串编写包装器时,我需要使内部 mLength
变量可变,以便我可以缓存长度,即使请求它的是 常量
对象。它没有改变长度或字符串,并且在类本身之外不可见,所以让它可变
是可以的。
关于C++ 可变在这种情况下合适吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/749865/