【发布时间】:2013-10-19 13:42:31
【问题描述】:
所以我有一个我正在从事的项目具有相当的层次结构。在 this 的基类中,有一个函数 reset() 会在所有派生类中被调用。我感到困惑的是,由于派生类中的重置基本上只是重置它的私有变量,然后调用它的前一个(更高)类的重置()函数,重置函数必须是虚拟的吗?
例如。
class Base
{
private:
int some;
public:
void reset();
};
class Derive : public Base
{
private:
int some1;
public:
void reset();
};
class Derive_two : public Derive
{
private:
int some2;
public:
void reset();
};
所以基本上 Derive_two 类的重置函数如下所示。
void Derive_two::reset()
{
some2 = 10;
Derive::reset();
}
这段代码对吗?还是函数 reset() 需要是 virtual 类型的?
感谢您的任何帮助。
【问题讨论】:
-
嗯,我明白了。所以基本上,如果我希望派生类覆盖基类函数,我会将其设为虚函数。非常感谢 =)
-
到目前为止,我已经看到了许多
reset的实现,这通常比其他任何事情都更容易造成维护负担。如果您不再需要某个物品,请将其扔掉。如果您需要一个新对象,请构建一个新对象。 -
@MatthieuM。老实说,我宁愿没有 reset() 功能,因为它确实是一种负担。但是,不幸的是,该程序被另一个程序标记,该程序检查 reset() 函数,而不是该程序是否执行了它应该做的事情。
标签: c++ virtual class-hierarchy