gpt4 book ai didi

C++ 抽象类和创建派生类

转载 作者:行者123 更新时间:2023-11-27 23:11:29 25 4
gpt4 key购买 nike

1) 我想创建一个抽象类,其中两个派生类可以继承所有抽象方法,而不必覆盖任何行为。这意味着我没有纯虚函数来强制子类提供。这是否意味着我不能创建抽象类(我知道在 Java 中可以)?

2) 考虑到我有一个抽象类的构造函数,我有点不确定如何创建派生类 - 但这个构造函数的目的是什么?我应该从任何地方明确调用它吗??

最佳答案

是的,您仍然可以将其抽象化。惯用的做法是使析构函数成为纯虚拟的。 (请注意,尽管是纯虚拟的,您仍然需要为析构函数提供定义。)

例如

struct Base {
virtual ~Base() = 0;

virtual void fn1();
virtual void fn2();
// ...
};

如果要从派生类构造函数中调用非默认构造函数,则需要使用成员初始化列表。例如

Derived::Derived() : Base(0, 1.5, "hello") {
}

如果您只是调用基类的默认构造函数,通常可以将其省略,并且在构造任何派生类的实例时将自动调用默认基构造函数。

关于C++ 抽象类和创建派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20025360/

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