题目:设计一个类,只能在栈上创建对象
分析:方法(1):将构造函数定义成私有的,并且在一个静态成员函数中,调用构造函数在栈上创建对象。但是我有个问题,静态成员函数不能调用非静态成员函数,那怎么就可以调用构造函数呢。
class Test
{
private:
//构造函数定义成私有的
Test()
{}
public:
static Test Create()
{
return Test();
}
};
方法(2):因为在在堆上申请空间要调用operator new(),我们可以禁用这个函数,来达到禁止在堆上创建对象的情况
class Test
{
public:
Test()
{}
private:
//将operator new()方法禁用
void* operator new(size_t);
};