【发布时间】:2020-05-25 01:14:29
【问题描述】:
我有下面的代码,其中基类定义了一个纯虚函数,派生类定义了这个纯虚函数,用基类的私有成员变量var(var不会被改变)执行一些计算然而)。 var 通常是一些大型结构。
从设计的角度来看,我读到通常不赞成在这种情况下将var 设为受保护成员。实现我想要的最好方法是将var作为参数传递给virtual_func()吗?
这引发了第二个问题。如果我想在virtual_func 中修改var 怎么办?这会改变你的答案吗?
class base
{
public:
void search()
{
//virtual func in derived class must use var in base class, but not change var
virtual_func();
}
private:
T var;
virtual void virtual_func() = 0;
};
class derived : public base
{
void virtual_func()
{
//does something with base class's var, but not alter it
}
};
【问题讨论】:
-
如果你想修改
var那么protected是你的选择,我不明白你为什么不想使用它。我的意思是,您何时需要使用该关键字?因为看起来你拒绝在它设计的特定场景中使用它。
标签: c++ inheritance polymorphism virtual