每日一刷——一个类不能被继承 &类只能在堆上创建对象&类只能在栈上创建对象。
来源:互联网 发布:微积分 清华 知乎 编辑:程序博客网 时间:2024/05/29 16:37
1.设计一个类不能被继承
将父类的构造和析构函数设为私有。
在C++中,子类的构造和析构函数会自动调用父类的构造和析构函数,所以将父类构造和析构设为私有后,子类继承时会由于试图调用父类构造函数而编译出错。
这时可以设计两个接口供外部创建对象
class AA{public: static AA *GetInstance() { return new AA(); } static void DeleteInstance(AA*pInstance) { delete pInstance; }private: AA() {}; ~AA() {};};//利用虚拟继承:class AA { friend T; private: AA (); ~AA (); }; class BB:virtual public AA{ public: BB(); ~BB(); };
2.设计一个类只能在堆上创建对象
- 在堆上创建对象需要用到动态开辟空间,需要使用new
- new一个新对象分为两步:
调用operator new()在堆上查找合适大小的空间分配给新对象;
调用构造函数构造对象,对新开辟的空间进行初始化
class A
{
protected:
A(){}
~A(){}
public:
static A*create()
{
return new A();
}
void destory()
{
delete this ;
}
};
3.设计一个类只能在栈上创建对象
只有使用new运算符,对象才会建立在堆上,因此,只要禁用new运算符就可以实现类对象只能建立在栈上。将operator new()设为私有即可。
class A {public: A(){} ~A(){}private: void* operator new(size_t t); void operator delete(void* ptr); };
阅读全文
0 0
- 每日一刷——一个类不能被继承 &类只能在堆上创建对象&类只能在栈上创建对象。
- 设计一个类不能被继承;只能在堆上创建对象;只能在栈上创建对象
- 设计类不能被继承 、只能在堆上创建对象、只能在栈上创建对象。
- 类--设计一个类不能被继承&&设计一个类只能在堆上创建对象&&设计一个类只能在栈上创建对象。
- -设计一个类不能被继承 2.设计一个类只能在堆上创建对象。 3.设计一个类只能在栈上创建对象。
- 1.设计一个类不能被继承 2.设计一个类只能在堆上创建对象。 3.设计一个类只能在栈上创建对象
- 设计一个类不能被继承 2.设计一个类只能在堆上创建对象。 3.设计一个类只能在栈上创建对象
- C++:1.设计一个类不能被继承 2.设计一个类只能在堆上创建对象。 3.设计一个类只能在栈上创建对象。
- 1.设计一个类不能被继承 2.设计一个类只能在堆上创建对象。 3.设计一个类只能在栈上创建对象
- 创建一个不能被继承的类和只能在堆上(或栈上)创建对象
- 根据类(不能被继承、只能在栈上/堆上创建对象)的特点设计一个类
- C++创建一个类(1.只能在堆上创建; 2 只能在栈上创建; 3 不能被继承(堆上和栈上都可以创建))
- C++创建一个类(1.只能在堆上创建; 2 只能在栈上创建; 3 不能被继承(堆上和栈上都可以创建))
- 定义一个只能在堆上生成对象的类&&定义一个只能在栈上生成对象的类&&定义一个类不能被继承
- 链表带环问题/设计一个类不能被继承/设计一个类只能在堆(栈)上创建对象
- 让一个类只能在对上创建对象或者只能在栈上实例化
- [C++]限制一个类的对象只能在栈或堆上创建
- 如何创建一个类只能在堆(栈)上建立对象
- SecureCRT常用命令
- Maven使用tomcat8-maven-plugin插件
- c++: 两个变量的求和输出
- 某银行降低贷款拖欠率的逻辑回归建模
- 大数据推荐算法之隐语义模型(lfm)进行Top-N推荐
- 每日一刷——一个类不能被继承 &类只能在堆上创建对象&类只能在栈上创建对象。
- 多线程之倒计时器CountDownLatch及原理
- AOP与OOP的区别
- 异常处理与调试
- 研究生报告模板LaTex
- hdu 4512 吉哥系列故事——完美队形I
- 【极角排序】吼打法
- 数据结构导论--思维导图
- C++的工厂模式和单例模式混用