题目:c++设计一个不能被继承的类。
解法一:把构造函数设为私有函数。
class SealedClass1 { public: static SealedClass1* GetInstance() { return new SealedClass1(); } static void DeleteInstance(SealedClass1* pInstance) { delete pInstance; } private: SealedClass1(){} ~SealedClass1(){} };
解法二:利用虚拟继承
template <typename T> class MakeSealed { friend T; private: MakeSealed(){} ~MakeSealed(){} }; class SealedClass2:virtual public MakeSealed<SealedClass2> { public: SealedClass2(){} ~SealedClass2(){} };