在这种情况下C可变吗?
我想问一下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; } Base类是第三方库.我正在扩展它以提供我自己的NoMod().库原始NoMod()声明为const. 我的NoMod()与Base的不同之处在于它需要修改自己的成员变量. 因此,对于我自己的NoMod()来编译并在调用Draw()时调用,我必须这样做 1)将Derive :: NoMod()实现为const 这是我能做的最好的吗? 解决方法
正如“头脑极客”所描述的,您问题的答案取决于您的数据成员的使用方式.
我在一个类中区分了两种类型的数据成员. 我使用常用??术语“属性”来指代数据成员 我创造了它表示的原型“贡献” 例如,假设您的对象是链接列表, 再举一个例子,如果你有一个const方法来搜索列表. 因此,属性的数据成员通常不会被声明为可变的,有助于对象运行的数据成员通常是可变的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |