предотвратить наследование в C ++ - PullRequest
0 голосов
/ 15 ноября 2018

Чтобы избежать наследования класса 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...