c/c++整理析构函数
来源:互联网 发布:淘宝女人秋装 编辑:程序博客网 时间:2024/06/05 08:07
c++中虚析构函数的作用是什么?
析构函数是为了在对象不被使用后释放它的资源,虚函数是为了实现多态。那么,把析构函数声明为virtual有什么作用呢? 请看下面代码:
代码37行可以正常释放pt1的资源,但是代码41行并没有正常释放pt2的资源,从结果看,Derived类的析构函数并没有被调用。通常情况下,类的析构函数里面都是释放内存资源,而析构函数不被调用的话就会造成内存泄漏。原因是指针pt2是Base类型的指针,释放pt2时只进行Base类的析构函数。在代码第9行加上virtual关键字后:
此时释放指针pt2时,由于Base的析构函数是virtual的,就会先找到并执行Derived类的析构函数,然后执行Base类的析构函数,资源正常释放,避免了内存泄漏。
因此,只有当一个类被用来作为基类的时候,才会把析构函数写成虚析构函数。
看代码写结果——析构函数的执行顺序
本体考查的是析构函数的执行顺序。析构函数的执行顺序与构造函数的执行顺序相反。
main()函数中定义了两个类B的对象,它们的基类是A。由于这两个对象都是栈中分配的,当main()函数退出时会发生析构,又因为obj1比obj2先声明,所以obj2先析构。它们的顺序是首先执行B的析构函数,然后执行A的析构函数。
程序输出:
阅读全文
0 0
- c/c++整理--析构函数
- c/c++整理析构函数
- C安全函数整理
- C 常用函数整理
- C的函数整理
- C安全函数整理
- C语言 函数 整理
- c/c++整理--类String的构造函数、析构函数和赋值函数
- c/c++整理--类String的构造函数、析构函数和赋值函数
- C语言时间函数整理
- C语言时间函数整理
- C语言函数学习整理
- c/c++整理--函数重载
- c/c++整理--虚函数
- 析构函数(C#)
- C++--------析构函数
- c++::析构函数
- C++-析构函数
- python操作数据库
- hdu-6170 Two strings
- 加载配置文件的四种方式
- “NODE_ENV” is not recognized as an internal or external command
- Linux下的图片编辑软件和画图软件
- c/c++整理析构函数
- C++笔记_03面向对象4
- Python3爬虫下载pdf(一)
- POJ 1986 RMQ+LCA
- 1.数码相框之框架
- 【Java】输入指定格式的邮箱(正则表达式)
- JAVA排序算法学习之路第二站-快速排序
- 并查集
- redis持久化