题目:
用C++设计一个不能被继承的类。
分析:
一个类被继承后,在生成派生类对象时,派生类会主动调用父类的构造函数,所以如果父类的构造函数被设置成私有时,派生类的对象就无法构建。
一、直接将构造函数设为私有函数
class SealedClass
{
public:
static SealedClass* GetInstance()
{
return new SealedClass();
}
static void DeleteInstance( SealedClass* pInstance )
{
delete pInstance;
}
private:
SealedClass() {}
~SealedClass() {}
};
class test : public SealedClass
{
};
int main( void )
{
// test t;
return 0;
}
2.虚拟继承
template <typename T>
class MakeSealed
{
friend T;
private:
MakeSealed() {}
~MakeSealed() {}
};
class SealedClass2 : virtual public MakeSealed<SealedClass2>
{
public:
SealedClass2() {}
~SealedClass2() {}
};
class Try : public SealedClass2
{};