美文网首页
C++构造和析构调用顺序

C++构造和析构调用顺序

作者: 二进制人类 | 来源:发表于2022-10-23 14:16 被阅读0次

构造函数执行顺序

1.基类构造函数(如有多个则按基类声明顺序从左到右)

2.成员变量构造函数(如果有多个按成员变量声明顺序)

3.执行自身构造函数

析构函数执行顺序(与构造相反)

1.自身析构

2.成员析构(与声明顺序相反)

3.基类析构(从右自左)

#include <iostream>
using namespace std;
class B
{
public:
    int m_b;
public:
    B()
    {
        cout << "B构造" << endl;
    }
    B(int b)
    {
        m_b = b;
        cout << "B有参构造" << endl;
    }
    ~B()
    {
        cout << "B析构" << endl;
    }
};

class A
{
public:
    int m_a;
    B objB;
public:
    A()
    {
        cout << "A构造" << endl;
    }
    A(int a, int b) : objB(b), m_a(a)
    {
        cout << "A有参构造" << endl;
    }
    ~A()
    {
        cout << "A析构" << endl;
    }
};

class C
{
public:
    int m_c;
public:
    C()
    {
        cout << "C无参构造" << endl;
    }
    C(int c) : m_c(c)
    {
        cout << "C有参构造" << endl;
    }
    ~C()
    {
        cout << "C析构" << endl;
    }
};

class D
{
public:
    int m_d;
public:
    D()
    {
        cout << "D无参构造" << endl;
    }
    D(int d) : m_d(d)
    {
        cout << "D有参构造" << endl;
    }
    ~D()
    {
        cout << "D析构" << endl;
    }
};

class E : public A, public C
{
public:
    int m_e;
    D objD;
public:
    E()
    {
        cout << "E无参构造" << endl;
    }
    E(int a, int b, int c, int d) : A(a, b), C(c), objD(d)
    {
        cout << "E有参构造" << endl;
    }
    ~E()
    {
        cout << "E析构" << endl;
    }
};

int main(int argc, char *argv[])
{
    E objE(10, 20, 30, 40);
    return 0;
}

输出如下

B有参构造
A有参构造
C有参构造
D有参构造
E有参构造
E析构
D析构
C析构
A析构
B析构

相关文章

  • 2002.C++BASE-构造函数、析构函数

    转:C++继承中构造函数、析构函数调用顺序及虚析构函数 1.构造函数 大家都知道构造函数里就可以调用成员变量,而继...

  • c++构造函数,析构函数,调用顺序

    最近,在看c++,聊一个简单的话题吧。构造函数,析构函数,及调用顺序。 构造函数, 构造函数,析构函数,如上代码所...

  • C++构造和析构调用顺序

    构造函数执行顺序 1.基类构造函数(如有多个则按基类声明顺序从左到右) 2.成员变量构造函数(如果有多个按成员变量...

  • [C++之旅] 13 析构函数

    [C++之旅] 13 析构函数 析构函数与构造函数相反,构造函数在实例化一个对象时调用,而析构函数在销毁一个对象时...

  • C++中对象构造顺序

    单个对象的构造与析构 单个对象创建时构造函数的调用顺序1、调用父类的构造过程2、调用成员变量的构造函数(调用顺序与...

  • Python:重载构造方法

    对于使用过C++的人来说,构造函数与析构函数不会陌生。构造函数在对象创建时被调用,析构函数在对象被销毁时被调用。而...

  • 简介python中的析构函数与构造函数

    python的构造和析构函数为固定的名字。 构造函数 析构函数 不像c++中那样构造函数和析构函数是类名字。并且在...

  • Effective C++笔记

    2.构造/析构/赋值运算 条款05:了解C++默默编写并调用哪些函数 默认构造函数和析构函数主要是给编译器一个地方...

  • c++面向对象-构造、析构、初始化列表

    构造函数 构造函数是指创建对象的时候,会调用的函数。C++构造函数可以重载,指针或者对象均可调用构造函数。 析构函...

  • 360笔试题

    1. 在函数F中,本地变量a和b的构造函数(constructor)和析构函数(destructor)的调用顺序是...

网友评论

      本文标题:C++构造和析构调用顺序

      本文链接:https://www.haomeiwen.com/subject/zqxbzrtx.html