Я читал C++ часто задаваемые вопросы по http://www2.research.att.com/~bs/bs_faq2.html, когда я наткнулся на этот код, чтобы реализовать «запечатанный» класс:реализация запечатанный класс запроса
class Base{
public:
friend class A;
private:
Base(){cout<<"Base constructor called";}
};
class A : public virtual Base{
public:
A(){cout<<"A const called";}
};
class B : private A{};
int main(){
A a;
//B b;
return EXIT_SUCCESS;
}
Я не понимаю, как с помощью виртуального ключевого слова «запечатаны «эффект класса». Если я удалю ключевое слово virtual, то он не имеет эффекта «запечатанного». Зачем?
Что мы говорим на самом деле, говоря: общедоступная виртуальная база? – badmaash
@Abhi: что база наследуется практически, т. Е. Для любого класса, производного от A и любого другого класса, который фактически наследуется от Base, имеется только одна копия Base, а не несколько, и этот экземпляр Base строится с помощью самый производный класс. Это очень сложная тема. – Puppy
Что делать, если я использую личное наследование? Будет ли здесь частное наследство? На самом деле, я тестировал, что наследование «private virtual» отлично работает. И поэтому я считаю, что использование частного наследования будет здесь более разумным. В конце концов, вы не хотите, чтобы кто-то использовал 'Base *' для управления объектом 'A', базовый класс не предназначен для OOP. Это просто полезность. Plz комментирует. – zoujyjs