gpt4 book ai didi

c++ - 是否所有虚函数都需要在派生类中实现?

转载 作者:IT老高 更新时间:2023-10-28 12:02:07 27 4
gpt4 key购买 nike

这似乎是一个简单的问题,但我在其他任何地方都找不到答案。

假设我有以下内容:

class Abstract {
public:
virtual void foo() = 0;
virtual void bar();
}

class Derived : Abstract {
public:
virtual void foo();
}

Derived 类不实现 bar() 函数可以吗?如果不是我的所有派生类都需要 bar() 函数怎么办,但有些需要。抽象基类的所有虚函数都需要在派生类中实现,还是只需要纯虚函数?谢谢

最佳答案

派生类不必自己实现所有虚函数。他们只需要实现 pure 个。1 这意味着问题中的 Derived 类是正确的。它继承其祖先类Abstractbar实现。 (这假设 Abstract::bar 在某处实现。问题中的代码声明了该方法,但没有定义它。您可以将其内联定义为 Trenki's answer 所示,或者您可以定义分开。)


1 即便如此,仅当派生类将被实例化。如果派生类没有直接实例化,而只是作为更多派生类的基类存在,那么那些类负责实现其所有纯虚方法。层次结构中的“中间”类允许保留一些未实现的纯虚方法,就像基类一样。如果“中间”类确实实现了纯虚方法,那么它的后代将继承该实现,因此他们不必自己重新实现。

关于c++ - 是否所有虚函数都需要在派生类中实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931612/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com