#include <iostream>
class A
{
public:
A() { std::cout << " A ctor" << std::endl; }
A(int i) { std::cout << " A ctor i" << std::endl; }
~A() { std::cout << " A dtor" << std::endl; }
};
class B: public A
{
public:
B() : A() { std::cout << " B ctor" << std::endl; }
~B() { std::cout << " B dtor" << std::endl; }
};
class C: public A
{
public:
B _b;
C() : _b(), A() { std::cout << " C ctor" << std::endl; }
~C() { std::cout << " C dtor" << std::endl; }
};
int main()
{
C c;
}
Выход:Конструкторы заказ
A ctor
A ctor
B ctor
C ctor
C dtor
B dtor
A dtor
A dtor
Что такое порядок инициализации. список? Почему, в init. список C, ctor A, названный до ctor B? Я думал, что выход должен быть:
A ctor
B ctor
A ctor
C ctor
C dtor
A dtor
B dtor
A dtor
Спасибо.
Вы показываете код на C++, но указываете как C#. Не могли бы вы прояснить? –
Я перемаркировал его, очевидно, не C# – CyberDude
Не является ли последовательность конструкторов 'A, A, D, A, B, C'? Трудно поверить, что конструктор для члена '_d' не вызывается. –