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

来源:互联网 发布:od破解 e盾网络验证 编辑:程序博客网 时间:2024/05/22 07:02

要让一个类只能在堆上创建对象可以将其构造函数的访问权限设置为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();};



0 0
原创粉丝点击