如何创建一个只能在堆上产生对象的类
来源:互联网 发布:淘宝直通车出价公式 编辑:程序博客网 时间:2024/05/22 04:26
题目:如何创建一个只能在堆上产生对象的类
一、分析:
1.定义一个只能在堆上产生对象的类,自然联想到new、malloc、calloc等动态分配内存的方法来产生对象。但在C++中,产生对象要调用构造函数,当然选择new来解决。
2.只能在堆上而不能在栈上创建对象,想到可以把构造函数定义成private或者protected 里面,防止在类外的栈空间上调用构造函数来创建对象,生命周期结束时调用析构函数,故把析构函数也设置为private或protected。
3.可以定义一个成员函数来产生new出对象通过返回值的方式传递出来。
二、实现
#include<iostream>using namespace std;class ObjInHeap{public: int _aa; static ObjInHeap& GetObject(int aa)//new的对象生命周期长用引用接受 { return *new ObjInHeap(aa); }protected: ObjInHeap(int aa) :_aa(aa) {} ~ObjInHeap() { delete this; }};int main(){//ObjInHeap aa(10);限制在栈上创建对象 ObjInHeap aa=ObjInHeap::GetObject(1);//把成员函数设置为static,就能不需要对象能调用成员函数。 cout << aa._aa << endl; system("pause"); return 0;}
三、注意:
1.把成员函数设置为static,就能不需要对象能调用成员函数。
2.在析构函数处delete 掉new出来的对象避免内存泄漏
0 0
- 如何创建一个只能在堆上产生对象的类
- 如何创建一个只能在堆上创建对象的类
- 如何定义一个只能在堆(栈)上创建对象的类
- 如何定义一个只能在堆(栈)上创建对象的类
- 一个只能在堆产生对象的类实现
- 如何创建一个类只能在堆(栈)上建立对象
- 如何创建一个类只能在堆(栈)上建立对象
- 如何定义一个只能在堆上(栈上)生成对象的类?
- 如何定义一个只能在堆上(栈上)生成对象的类
- 如何定义一个只能在堆上(栈上)生成对象的类?
- 如何定义一个只能在堆上(栈上)生成对象的类?
- 如何定义一个只能在堆上(栈上)生成对象的类?
- 如何定义一个只能在堆上(或栈上)生成对象的类
- [C++]限制一个类的对象只能在栈或堆上创建
- 限制对象只能在堆上产生
- 设计一个类不能被继承;只能在堆上创建对象;只能在栈上创建对象
- 如何定义一个只能在堆上生成对象的类
- 第二讲:如何定义一个只能在堆上生成对象的类
- SolrCloud初识
- 求换钱的最少货币数
- nginx指令开发时变量处理一
- HDU-4507-数位dp
- 我将进化成一条狗(2)——大数据
- 如何创建一个只能在堆上产生对象的类
- Repo & Git 的碰撞
- 关于一个前端移动端高度自适应例子
- 我将进化成一条狗(3)——区块链
- djangobook的旧版本代码,关于数据库
- git: Why 'Everything up-to-date' when pushing
- 第三方动态权限申请_AndPermission初探
- 习惯---哈佛大学推荐20个快乐的习惯
- 我将进化成一条狗(4)——人工智能