如何定义一个只能在堆上生成对象的类
来源:互联网 发布:优美壁纸软件 编辑:程序博客网 时间:2024/05/22 03:28
如何定义定义一个只能在堆上生成对象的类???
这种题主要考的是对C++语法的理解,以及对C++语法的运用。
分析:
对象可以在栈上生成也可以由我们在堆上new出来。要想只在堆上生成对象而不能在栈上生成对象在类外是
无法完成的,我们必须从类的内部入手。
我们知道类对象的构造是由构造函数完成的,如果我们把构造函数声明为保护的,使得不能在类外调用构造
函数,这样的话在类外就不能从栈上生成对象了,但这同时也不能在类外new出对象了。
为此,我们可以在类内new一个对象并提供一个公有的接口来返回这个对象。接下来如果在类外定义类对象
的话,只需要调用这个函数即可。貌似这样做还是行不通,因为在类外只能由类对象调用类成员函数,这该怎
么办呢???
我们可以将这个接口声明为静态成员函数,这样就可以了。
例:
class AA{public: static AA* GetObject(int a) { return new AA(a); } ~AA() { delete this; }protected: AA(int a) { _a = a; }private: int _a;};void test(){ AA *a = AA::GetObject(10);}
我们还可以把析构函数声明为私有的,然后再提供一个访问析构函数的公有接口即可:
class AA{public: void destory() { delete this; }private: ~AA() { }};void test2(){ AA *a=new AA; //可以 a->destory();}
1 0
- 如何定义一个只能在堆上(栈上)生成对象的类?
- 如何定义一个只能在堆上(栈上)生成对象的类
- 如何定义一个只能在堆上(栈上)生成对象的类?
- 如何定义一个只能在堆上(栈上)生成对象的类?
- 如何定义一个只能在堆上(栈上)生成对象的类?
- 如何定义一个只能在堆上(或栈上)生成对象的类
- 如何定义一个只能在堆上生成对象的类
- 第二讲:如何定义一个只能在堆上生成对象的类
- 如何定义一个只能在堆上生成对象的类
- 如何定义一个只能在堆(栈)上生成对象的类
- 如何定义一个只能在栈/堆上生成对象的类
- 如何定义一个只能在堆上生成对象的类
- 定义一个只能在堆上生成对象的类&&定义一个只能在栈上生成对象的类&&定义一个类不能被继承
- 定义一个只能在堆上(栈上)生成对象的类
- 定义一个只能在堆上(栈上)生成对象的类
- C++定义一个只能在堆上(栈上)生成对象的类
- 详解如何定义一个只能在堆上/栈上生成的类
- 如何定义一个只能在栈或者堆上生成的类
- php单例
- 第11周项目2-用二叉树求解代数表达式
- 一天一条Linux指令-vim
- Centos7 安装配置apache(nginx)+php+mysql环境
- 内核新的ioctl方式---- unlocked_ioctl和compat_ioctl
- 如何定义一个只能在堆上生成对象的类
- win10应用商店edge等无法联网 错误代码为 0x8000FFFF
- gcc交叉编译器安装
- vector中insert()的用法详解
- crontab环境变量问题
- 周三
- c++中的类模板
- bzoj 3832: [Poi2014]Rally 线段树+拓扑排序
- string类型判==考察