Небольшой вопрос о создании объектов. Скажем, у меня есть эти два класса:
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;
};
и в основном я создаю экземпляр B
:
int main(){
B b;
}
Обратите внимание, что B
происходит от A
, а также имеет поле типа A
.
Я пытаюсь понять правила. Я знаю, что при построении объекта сначала вызывается его родительский конструктор, а при деструкции - наоборот.
А как насчет полей ( A a;
в данном случае)? Когда создается B
, когда он вызовет конструктор A
? Я не определил список инициализации, есть ли какой-то список по умолчанию? А если списка по умолчанию нет? И тот же вопрос о разрушении.