不能被继承的类 【微软面试100题 第五十九题】
题目要求:
用C++设计一个不能被继承的类。
参考资料:剑指offer第48题。
题目分析:
方法1:把构造函数设为私有函数,定义共有的静态函数来创建和释放类的实例;
方法2:利用虚拟继承和友元;
代码实现:
//把构造函数设为私有函数,定义共有的静态函数来创建和释放类的实例 class Temp { public: static Temp *GetInstance() { return new Temp(); } static void DeleteInstance(Temp *pInstance) { delete pInstance; } private: Temp(); ~Temp(); }; //利用虚拟继承和友元,对外使用Temp1 tempLate <class T> class Temp { friend T; private: Temp(){} ~temp(){} }; class Temp1:virtual public Temp<Temp1> { public: Temp1(){} ~Temp1(){} };