cpp继承中构造和析构顺序

06-4 继承中构造和析构顺序

子类在继承父类后,当子类创建对象的时候,也会调用父类的构造函数。

思考:在继承的时候,创建子类对象的时候,是先构造子类对象还是父类对象?析构呢?

#include <iostream>
using namespace std;
class A 
{
public:
    A()
    {
        cout << "这是类 A 的构造函数。" << endl;
    }
    ~A()
    {
        cout << "这是类 A 的析构函数。" << endl;
    }
};
class B : public A 
{
public:
    B()
    {
        cout << "这是类 B 的构造函数。" << endl;
    }
    ~B()
    {
        cout << "这是类 B 的析构函数。" << endl;
    }
};
int main()
{
    class B b;
    system("pause");
    return 0;
}

运行结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)

这是类 A 的构造函数。
这是类 B 的构造函数。
请按任意键继续. . .
这是类 B 的析构函数。
这是类 A 的析构函数。

我们来分析一下:

在这里,我们创建了两个类,一个类是类A,另外一个是类B。其中,类B使用公共继承方式(public)继承自类 A

之后我们为类A和类B创建各自的构造和析构函数,并且使用cout打印,方便我们在控制台上可以看出构造和析构的顺序。

之后我们使用在windows系统下独有的命令:system("pause");即一个暂停命令。

最后我们运行一下,发现打印的结果是先调用类A的构造函数,再调用类B的构造函数。之后会暂停。按任意键继续后,会先调用类B的析构函数,再调用类B的析构函数。

最终,可以得出结论:继承中,先调用父类的构造函数,再调用子类的构造函数。析构时,先调用子类的析构函数,再调用父类的析构函数。

  • 总结:
    1. 继承中,先调用父类的构造函数,再调用子类的构造函数。析构时,先调用子类的析构函数,再调用父类的析构函数。
    2. 符合先构造的后析构的规律。(和一个类的对象做另外一个类的成员是一样的)
文章「cpp继承中构造和析构顺序」,由本站用户「Admin」发布。文章仅代表Admin观点,不代表本站立场。
页面网页地址「https://xiaozhiyuqwq.top/p/931」。
如您对文章及其附件提出版权主张,或进行引用转载等,请查看我们的【版权声明】
无评论:-)

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇