Tag: 调用层次结构

在inheritance中调用构造函数/析构函数的顺序

关于创build对象的一个​​小问题。 说我有这两个类: 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; }; 在主要我创build一个B的实例: int main(){ B b; } 请注意, B来自A并且还具有Atypes的字段。 我试图找出规则。 我知道当构造一个对象时,首先调用它的父构造函数,反之亦然。 怎么样的领域(在这种情况下)? 当B被创build时,它何时调用A的构造函数? 我还没有定义一个初始化列表,是否有某种默认列表? 如果没有默认列表? 和关于破坏的同样的问题。