From:http://blog.csdn.net/lazy_tiger/article/details/2224899 一个类不能被继承,也就是说它的子类不能构造父类,这样子类就没有办法实例化整个子类从而实现子类无法继承父类.我们可以将一个类的构造函数声明为私有,使得这个类的构造函数对子类不可见,那么这个类也就不能继承了.但是,这引出一个问题,客户程序岂不是也无法实例化这个类了?OK,让我们参考一下Singleton模式,用一个static函数来帮助创建这个类的实例,问题就解决了! class
前面讲到,派生类的构造函数和析构函数会自动调用基类的构造函数和析构函数,那么要让一个类不能被继承,那么就将它的构造函数和析构函数私有函数(派生类可以访问保护函数).那么怎样才能得到该类的实例呢? 这倒不难,可以通过定义公有的静态函数来创建和释放类的实例,实现该类不能被继承但能被实例化的功能. #include"stdafx.h" #include<iostream> using namespace std; class Base { private: Base(){}; ~
#include<iostream> using namespace std; class Gradpa { friend class Parent;//声明public或者private都无影响 private: Gradpa(){ cout<<"I m Gradpa"<<endl; }; ~Gradpa(){}; }; class Parent: virtual public Gradpa { public: Parent(){ cout<