Чтобы избежать наследования класса Base, я запустил тест:
class non_inherit {
protected:
non_inherit(){}
};
class Base : virtual non_inherit{
public:
Base(){}
};
class Derived : public Base{
public:
Derived(){}
};
int main(){
Derived d;
return 0;
}
И он успешно работает без ошибок.Поскольку Base является частным наследником non_inherit, конструктор по умолчанию должен быть закрытым для Derived, так как же Derived может получить доступ к конструктору non_inherit?
Я пытался явно вызвать c'tor non_inherit в c 'Происходит из Derived, и он терпит неудачу!Итак, что же сделал компилятор для успешного создания объекта Derived.