虚析构函数解析


Ø       
C++ 指出:当一个派生类对象通使用一个基针删除,而个基有一个非虚的析构函数,则结果是未定的。运行有代表性的后果是象的派生部分不会被销毁。如果一个要被另外一个类继承,而且用其指指向其子类对,如A* d = new B();(假定A是基B是从A承而来的派生),那(A)析构函数必是虚的,否delete dB的析构函数将不会被用,因而会生内存泄漏和异常;

Ø       构造函数工作方式:在构造一个,先构造其基象,即用其基的构造函数,然后用本的构造函数;

Ø       析构函数的工作方式是:最底层的派生类(most derived class)的析构函数最先被调用,然后调用每一个基类的析构函数。

分析以下实例:

虚析构函数实例

 

 

     如果ClassB中不是虚析构函数,类B的对象pB在Delete时只能调用B的析构函数。当ClassB中是虚析构函数时。分析如下:

虚析构函数 实例分析

结论:

Ø        带有多态性质基类,应该声明一个virtual析构函数。如果类中有任何虚函数,那么就应该将该类的析构函数定义成虚函数。

Ø         如果类的设计不是为了作为基类来使用,或者不是为了具备多态,就不应该声明虚析构函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server 2005参考:PIVOT

SQL Server 2005参考:PIVOT 可以使用 PIVOT 和 UNPIVOT 关系运算符对表值表达式进行操作以获得另一个表。 (1)PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来转换表值表达式,并在必要时对最终输出中所需的任何其余的列值执行聚合。 (2)UNPIV…

【转】wifi的几种工作模式

转自:https://www.cnblogs.com/Ph-one/p/12455362.html https://www.cnblogs.com/jpzhu/p/11983992.html WIFI配置具体的模式主要有以下这几种:STA模式、AccessPoint模式、Monitor模式、Ad-hoc(IBSS)模式、WDS模式、Mesh模式。 …

C++结构体实例和类实例的初始化

结构体实例(包括共用体)和类实例的初始化方法完全相同,二者都可以应用于继承层次中。不同点是结构体(包括共用体)默认成员为public,而类默认成员是private型的。 一、若类和结构体所有数据成员均为public型…

【转】WIFI-Direct(Wifi直连)、AirPlay、DLAN、Miracast功能介绍

转自:https://www.cnblogs.com/yuanqiangfei/p/11674640.html 不知道大家对无线同屏技术有多少了解,当这种技术普及的时候,我想我们的工作与生活又会方便很多吧!下面是目前三种主流同屏技术的介绍: 目前这种将终端信…

[轉]C# 中的委托和事件

轉自:http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.htmlpdf:http://www.tracefact.net/Document/Delegates-and-Events-in-CSharp.pdfC# 中的委托和事件 引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件…

可以让你少奋斗十年的工作经验

这个文章我看后,感触很深,写的很实际,也是我们很值得学习的,但是关键是我们要做到,很不容易啊,如果能都做到,那你就是一个牛人,我现在是没有都做到,但是我想努力去做到。…

【转】CT的FOV是什么含义

CT的FOV是什么含义 - : 视场,也可以说扫描范围24mm 在光学中FOV是什么意思 - : 视场角(FOV): 一个光学系统所能成像的角度范围. 角度越大, 则这个光学系统所能成像的范围越宽, 反之则越窄. 在实际产品当中, 又有光学FOV和机械FOV之分, 光学FOV是指SENSO…

MyEclipse 快捷键

Ctrl1 快速修复(最经典的快捷键,就不用多说了)CtrlD: 删除当前行CtrlAlt↓ 复制当前行到下一行(复制增加)CtrlAlt↑ 复制当前行到上一行(复制增加)Alt↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt↑ 当前行和上面一行交互位置(同上)Alt← 前一个编辑的页…

中国的程序员为什么这么辛苦?

做IT已经十年了。十年了,苦吃了不少,经验也有些。现在却越来越讨厌做开发了,越来越不想做IT。大学时曾经的梦想早已灰飞烟灭。现在回头想想,真是入错了行。恰同学少年那会儿,正是IT在中国兴起不久,满怀激情…

【转】解决MeasureString 不准确的问题

转自:https://www.cnblogs.com/MRRAOBX/articles/7473803.html 我在将字符串(含中文)Draw到一幅图片上时发现不准这个问题的。 比如一幅图片的宽是400pixel,Graphics对象g的GraphicUnit是Pixel,我要画到图上的字符串是str,我用g.MeasureString(str.Sub…

JS的手写TRIM函数

JS的手写TRIM函数 转载于:https://www.cnblogs.com/vibratea/archive/2009/07/24/1530109.html

专家观点:你必须了解的嵌入式Linux特性

如今,Linux正广泛应用于各种 嵌入式设备 的开发中,如数字电视、视讯转换盒、DVR播放器、xDSL/有线/PON调制解调器、家用路由器和 网络 网关。它尤其适合具有先进网络功能、大量设备驱动程序的数字家庭和家庭网络。除了嵌入式设备,Linux还支持…

【转】小谈PNG转SVG的方法 在线转换网站与illustrator

转自:https://www.aspirantzhang.com/network/png_to_svg.html 本文主要探讨JPG/PNG转SVG矢量格式并支持FILL的方法,介绍在线转换网站和通过illustator转换的经验。 应该说,国内网站很少用到SVG格式,在此之前我只是听过&#xf…

浅聊在美找工作以及工作之后的感受

此贴并不是炫耀我在美帝工作如何如何,而是仅仅想把这几个月的生活记录下来。在国内读完大学,不想找工作,又不想读国内的研究生,所以跟随大流,来到美帝读master。 在一个算不错的学校读完之后,来到加州硅谷找…

【转】最为详尽的WPF类继承关系*!

转自:最为详尽的WPF类继承关系 - 挑战 - 博客园

C/C++中“空语句”的说明

最近我的同事和一些网友都说C/C中“空语句”(就是单独一个分号的语句)具有延时的作用,可以用来写延时代码。其实这是一种错误的理解。 首先,有人认为空语句经编译后,生成汇编代码是“NOP”指令,NOP指令是空操作指令&am…

.netframework3.5 中TimeZoneInfo 类的使用

.net famework3.5中新增加了一个关于时区的静态类,可以使得我们方便的操作与时区相关的信息 下面的内容是摘自MSDN的信息,注意:这个类是Beta2中的类,至于Release后是否改变还不知道。由于电脑中没有安装英文正式版的MSDN,所以只能…

【转】Ubuntu16.04安装 Matlab2018a详细教程

转自:【Ubuntu】安装 Matlab2018a详细教程_My Blogs-CSDN博客_matlab2018a安装教程 Matlab2018a安装包下载: 链接: 百度网盘 请输入提取码 提取码: 3c75 一. 安装前的准备工作 1. 将下载好的文件R2018a_glnxa64_dvd1.iso, R2018a_glnxa64_dvd2.iso, …

Hive-Based Registry使用

对于Hive干什么用这里就不多介绍了,根据文档的介绍,Hive形式的注册表分为:Boot hive,System hv和User hive三种。Boot hive就是指那部分在Boot过程中需要使用到的注册表信息,这部分是实在没办法放在System hive中了,所…

【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

转自:matlab与C/C混合编程——在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 dateversioncomments2019/9/9V0.1Init2019/9/27V0.2添加报错信息写入log的实现文章目录 MATLAB生成Dll文件调用 生成dll文件调用dll文件MATLAB生成.so文件…