//方法1 把函数构造设为私有函数
class sealedClass
{
public:
static sealedClass* GetInstance()
{
return new sealedClass();
}
static void deleteInstance(sealedClass* pInstance)
{
delete pInstance;
}
private:
sealedClass(){}
~sealedClass(){}
};
//利用虚拟继承
template<typename T> class MakeSealed
{
friend T;
private:
MakeSealed(){}
~MakeSealed(){}
};
class SealedClass2 : virtual public MakeSealed<SealedClass2>
{
public:
SealedClass2(){}
~SealedClass2(){}
};
//实例化编译错误
//class Derived : public SealedClass2
//{
//};
int main()
{
return 0;
}