题目概述
解题思路
定义一个A类
如果B类想要继承A类的话
就会调用A类的构造函数
那么只要将A类的构造函数设置为私有成员
B类便无法继承A类了
然后我们可以通过设置一个函数,通过在堆上开辟空间来使用A类
代码实现
//普通方法,将类的构造函数设置为私有
//缺点:只可以在堆上创建空间
class A
{
public:
static A* GetObj()
{
return new A();
}
static void DestoryObj(A* a)
{
delete a;
}
private:
A()
{}
};
//无法继承
//class B :public A
//{
//
//};
void TestMethod1()
{
A* pa = A::GetObj();
A::DestoryObj(pa);
}
然而要注意的是
这个类只可以在堆上创建空间