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