gpt4 book ai didi

c++ - 基类的构造函数和析构函数是否与派生的一起调用?

转载 作者:IT老高 更新时间:2023-10-28 23:03:58 25 4
gpt4 key购买 nike

我有一个名为 MyBase 的类,它有一个构造函数和析构函数:

class MyBase
{
public:
MyBase(void);
~MyBase(void);
};

我有一个名为 Banana 的类,它像这样扩展 MyBase:

class Banana:public MyBase
{
public:
Banana(void);
~Banana(void);
};

Banana 中新的构造函数和析构函数的实现是否覆盖了 MyBase,或者它们仍然存在,并且在 Banana 构造函数/析构函数执行之前或之后被调用?

谢谢,如果我的问题看起来很愚蠢,我深表歉意。

最佳答案

基构造函数总是在派生构造函数之前被调用。Base 析构函数将在 Derved 析构函数之后调用。

你可以在派生构造函数上指定你想要的基础构造函数,如果不是默认的将被执行。

如果你定义了其他构造函数但不是默认构造函数,并且没有在派生构造函数上指定要执行哪个构造函数,它将尝试默认不存在并且会导致编译崩溃。

发生上述情况是因为一旦声明了一个构造函数,就不会生成默认构造函数。

关于c++ - 基类的构造函数和析构函数是否与派生的一起调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1640414/

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