Небольшой вопрос о создании объектов. Скажем, у меня есть два класса:
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? Я не определил список инициализации, есть ли какой-то список по умолчанию? А если нет списка по умолчанию? И тот же вопрос о деструкции.