题目:
用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
{};
本文介绍了两种在C++中设计不可被继承的类的方法:一是通过将构造函数设为私有并提供静态成员函数来获取实例;二是利用模板和虚拟继承实现。这两种方法都能有效防止类被继承。
2145

被折叠的 条评论
为什么被折叠?



