class A {
int i;
public:
A() {cout<<"in A def const\n";};
A(int k) {cout<<"In A const\n"; i = k; }
};
class B : virtual public A {
public:
B(){cout<<"in B def const\n";};
B(int i) : A(i) {cout<<"in B const\n";}
};
class C : public B {
public:
C() {cout<<"in C def cstr\n";}
C(int i) : B(i) {cout<<"in C const\n";}
};
int main()
{
C c(2);
return 0;
}
В этом случае вывод
in A def const
in B const
in C const
Почему это не входит в in A const
`Он должен следовать порядку 1 вызова конструктора arg. Но что на самом деле происходит при извлечении B из A с использованием виртуального ключевого слова.
Есть еще несколько вопросов
Даже если я удалю ключевое слово virtual в вышеуказанной программе и удалю весь конструктор по умолчанию, он дает ошибку. Итак, зачем ему нужен конструктор def