析构函数声明为私有的作用
来源:互联网 发布:淘宝汽车超人假机油 编辑:程序博客网 时间:2024/05/17 03:44
当我们规定类只能在堆上分配内存时,就可以将析构函数声明为私有的。
class alloc
{
public:
alloc():
private:
~alloc();
};
如果在栈上分配空间,类在离开作用域时会调用析构函数释放空间,此时无法调用私有的析构函数。
如果在堆上分配空间,只有在delete时才会调用析构函数。
可以添加一个destroy()函数来释放,从而解决不能在析构函数中添加delete的问题。
class alloc
{
public:
alloc():
destroy(){ delete this;}
private:
~alloc();
};
实例测试:
设置为私有未new:
#include<iostream>using namespace std;class A{ public: A() {}; void Get() { std::cout << "AAA" << std::endl;}; private: ~A() {};};int main(){ A a; a.Get(); return 0;}结果:
在堆空间申请:
#include<iostream>using namespace std;class A{ public: A() {}; void Get() { std::cout << "AAA" << std::endl;}; private: ~A() {};};int main(){ A* a = new A(); a->Get(); return 0;}结果:
正常输出:AAA
阅读全文
0 0
- 析构函数声明为私有的作用
- 析构函数声明为私有的作用
- 析构函数声明为私有的作用
- 拷贝构造函数和赋值构造函数声明为私有的作用
- 拷贝构造函数和赋值构造函数声明为私有的作用
- 拷贝构造函数和赋值构造函数声明为私有的作用
- 拷贝构造函数和赋值构造函数声明为私有的作用
- 【Java】将构造函数声明为私有有什么作用?
- 将构造函数,析构函数声明为私有和保护的,那么对象如何创建?
- 将构造函数,析构函数声明为私有和保护的,那么对象如何创建?
- 私有析构函数的作用
- 将析构函数声明为private的作用
- C++将多态基类的析构函数声明为virtual的作用
- 程序员面试金典: 9.14 Java 14.1 从继承的角度来看,将构造函数声明为私有会有何作用?
- 将类的方法声明为虚函数的作用
- 私有的构造函数作用
- 私有构造函数的作用
- 私有构造函数的作用
- 使用IDEA2017 支持vue 项目+ es6
- nginx 转发请求超时
- HDFS和MapReduce核心思想
- 40个Java集合面试问题和答案
- java中对象的关系
- 析构函数声明为私有的作用
- 现代操作系统之文件系统(中)
- Oracle中将毫秒类型时间转换以及取到毫秒时间类型的解决办法
- 如何写出优美的C代码
- kafka java demo
- Android 各类 Adapter 封装
- netty学习笔记
- Kaldi中如何使用已经训练好的模型进行语音识别ASR呢?
- 升级Gradle 3.0遇到的坑