C++只在堆上与栈上创建对象
来源:互联网 发布:自学java推荐书籍 编辑:程序博客网 时间:2024/05/16 04:10
只能在堆上,那么栈上的自动析构函数必须是private,这样可以保证不能在栈上创建对象,一旦创建了,没法析构,在堆上,我们可以加上一个public函数,来销毁堆上的对象;
代码如下:
// [11/3/2013 qingezha] 只能在堆上建对象class A{public:A(){cout<<"a is construct"<<endl;}void destroy(){delete this;}private:~A(){cout<<"a is deleting"<<endl;}//private://void* operator new(size_t){}}; A *b = new A; b->destroy();
输出为:a is constructa is deleting
只能在栈上建对象,那么需要重载new操作符,让外界不能访问new操作符即可,但是析构不能与上面相同,将private改成public即可
// [11/3/2013 qingezha] 只能在栈上建对象class A{public:A(){cout<<"a is construct"<<endl;}//void destroy()//{//delete this;//}~A(){cout<<"a is deleting"<<endl;}private:void* operator new(size_t){}};
A b;//b.destroy();这个时候不能调用destroy函数,调用会发生错误,因为delete this后,消除栈上的b时又要调析构此时对象已经不存在了,所以会发生错误!
- C++只在堆上与栈上创建对象
- 对象只在堆上创建
- c++ 只在堆上创建对象
- 让一个类只在堆/栈上创建对象
- C++:在堆上创建对象,还是在栈上?
- 如何只在栈上创建对象和只在堆上创建对象与创建出无法继承的对象
- 只在堆上对象和栈上对象
- c++ 只在栈上创建对象
- C++ 如何让类对象只在堆或栈上创建
- 创建不能被继承的类?只在栈上?只在堆上?
- 限制一个类对象只在堆上分配或者只在栈上分配
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- 只在堆上或只在栈上定义对象
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- 限制一个类对象只在堆上分配或者只在栈上分配
- 简单的Shell
- error C2381: “exit” : 重定义;__declspec(noreturn) 不同
- 使用EL表达式 接受URL直接传递值 需要注意的地方
- objective-c数组的四种遍历方法总结
- 一个PHP病毒
- C++只在堆上与栈上创建对象
- 晶体管的两种不同理解
- poj 3254 Corn Fields
- linux mysql免安装版
- ios7状态栏不覆盖列表页
- SQL SERVER 不能启用专用管理员连接DAC
- [LeetCode] First Missing Positive
- String
- Ubuntu使用笔记_rar工具