相关疑难解决方法(0)

成员构造函数和析构函数调用的顺序

哦,C++大师,我寻求你的智慧.对我说说标准,告诉我C++是否保证以下程序:

#include <iostream>
using namespace std;

struct A
{
    A() { cout << "A::A" << endl; }
    ~A() { cout << "A::~" << endl; }
};

struct B
{
    B() { cout << "B::B" << endl; }
    ~B() { cout << "B::~" << endl; }
};

struct C
{
    C() { cout << "C::C" << endl; }
    ~C() { cout << "C::~" << endl; }
};

struct Aggregate
{
    A a;
    B b;
    C c;
};

int main()
{
    Aggregate …
Run Code Online (Sandbox Code Playgroud)

c++

113
推荐指数
4
解决办法
5万
查看次数

继承中调用构造函数/析构函数的顺序

关于创建对象的一个​​小问题.说我有这两个类:

struct A{
    A(){cout << "A() C-tor" << endl;}
    ~A(){cout << "~A() D-tor" << endl;}
};

struct B : public A{
    B(){cout << "B() C-tor" << endl;}
    ~B(){cout << "~B() D-tor" << endl;}

    A a;
};
Run Code Online (Sandbox Code Playgroud)

并在主要我创建一个实例B:

int main(){
    B b;
}
Run Code Online (Sandbox Code Playgroud)

请注意,B派生自A并且还具有类型的字段A.

我想弄明白这些规则.我知道构造一个对象时首先调用它的父构造函数,反之亦然.

字段怎么样(A a;在这种情况下)?什么时候B创建,什么时候会调用它A的构造函数?我还没有定义初始化列表,是否有某种默认列表?如果没有默认列表?关于破坏的同样问题.

c++ constructor order-of-execution call-hierarchy

38
推荐指数
3
解决办法
8万
查看次数