让一个类只能在对上创建对象或者只能在栈上实例化
2017-04-03 19:29
429 查看
要让一个类只能在堆上创建对象可以将其构造函数的访问权限设置为private通过在public访问权限的函数中通过new来创建对象
要让一个类只能在栈上实例化就不能让其使用new
new operator总是先调用operator new,所以我们只要堆new操作符进行重载,并将它声明为private的,就能保证不能再使用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(); };
相关文章推荐
- 让一个类只能在对上创建对象或者只能在栈上实例化
- 让一个类只能在对上创建对象或者只能在栈上实例化
- 让一个类只能在对上创建对象或者只能在栈上实例化
- Java中如何实现一个类在内存里只能创建一个实例对象
- 怎么限制一个类的对象实例,只能在"堆"上分配,或者只能在"栈"上分配
- 一个servlet可以创建一个或者多个实例对象吗?
- 单态设计模式--一个类只能创建一个实例(对象)
- oracle 创建一个用户,只能访问指定的对象
- 只能在栈上或者堆上创建对象
- writeObject可以写n个,但是readObject()却只能读一次,你做一下测试。 如果你需要序列化好几个类的话,建议你用json;或者自己写两个方法,一个是将对象转换为字符串,一个是将字符串
- C# 创建互斥进程(程序只能运行一个实例)
- python判断类型:想知道一个对象(实例或者变量)是什么类型,什么结构的
- 创建XMLHttpRequest对象的一个实例
- 最简单直接继承、扩展Object,或者克隆一个Object到能创建多个互不干扰实例的方法
- 【Java】【TIJ】实现一个类:不允许用构造方法来直接创建类实例(对象)
- 如何用创建命名对象来判断应用程序是否已有一个实例在运行?
- python判断类型:想知道一个对象(实例或者变量)是什么类型,什么结构的
- C++只能允许类创建一个对象的做法
- oracle 创建一个用户,并且设定只能访问指定的对象
- constructor私有化,导致只能有一个实例的对象