Я читал часто задаваемые вопросы по 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 достигается эффект «запечатанного» класса. Если я удалю виртуальное ключевое слово, оно не будет иметь «запечатанного» эффекта. Почему?