c++ - 如何强制子类覆盖虚函数

标签 c++

有时我想强制子类重写一个函数,例如:

class A
{
    virtual void foo() = 0;
};

class B : public A
{
    virtual void foo() {...}
};

class C : public B
{
    //people may forget to override function foo
};

最佳答案

将中间类中的虚函数也声明为纯虚函数。请记住,您可以在中间类中提供该函数的实现,即使它被声明为纯虚拟。

class A
{
    virtual void foo() = 0;
};

class B : public A
{
    virtual void foo() = 0;
};

void B::foo()
{
}

class C : public B
{
    // Now you must provide an implementation
    // if you want to create an instance of C.
};

如果您不需要实例化 B,则此策略有效。如果您确实需要实例化 B,则需要考虑不同的策略。您还必须重新考虑您的类层次结构。在一个好的设计中,所有非叶类都应该是抽象的。

感谢@AustinMullins 提供指向 working code 的链接.

关于c++ - 如何强制子类覆盖虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28862627/

相关文章:

c++ - 为什么scanf要求两次输入

c++ - 优先级队列中的结构比较

c++ - QwtPlotSpectrogram 不起作用(无 ImageMode 绘图)

c++ - 有没有更好的替代 std::remove_if 从 vector 中删除元素的方法?

c++ - 如何将 double 数组输出到硬盘?

c++ - C++ 在生成的 ELF 文件中的什么地方保存它的类变量?

c++ - 为什么必须将std::stable_sort()的比较器函数的参数设置为常量?

c++ - Windows 7 64,如何在 C++ 中使用超过 2 GB

c++ - 在 OpenCV C++ 中训练用于车牌识别的 SVM

c++ - C++ 程序员需要一些帮助