A little question about creating objects. Say I have these two classes:
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;
};
and in main I create an instance of B
:
int main(){
B b;
}
Note that B
derives from A
and also has a field of type A
.
I am trying to figure out the rules. I know that when constructing an object first calls its parent constructor, and vice versa when destructing.
What about fields (A a;
in this case)? When B
is created, when will it call A
's constructor? I haven't defined an initialization list, is there some kind of a default list? And if there's no default list? And the same question about destructing.
question from:
https://stackoverflow.com/questions/7539282/order-of-calling-constructors-destructors-in-inheritance 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…