您的位置:首页 > 其它

让一个类只能在对上创建对象或者只能在栈上实例化

2017-04-03 19:29 429 查看
要让一个类只能在堆上创建对象可以将其构造函数的访问权限设置为private通过在public访问权限的函数中通过new来创建对象

class A
{
public:
A* GetA()
{
return new A();
}

private:

A()
:_i(0)
{}

int _i;
};

int main()
{
A* pa = NULL;
pa->GetA();

return 0;
}

要让一个类只能在栈上实例化就不能让其使用new

new operator总是先调用operator new,所以我们只要堆new操作符进行重载,并将它声明为private的,就能保证不能再使用new实例化对象,

class A
{
private:
void* operator new(size_t t){}
void operator delete(void* ptr){}
public:
A();
~A();
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐