《effective C++》:条款07——为多态基类声明virtual析构函数
2024-09-01 08:59:19
在继承中,基类的析构函数需要定义为虚析构函数数否则:
(1)当派生类对象经由一个base类指针删除时,而这个base类的析构函数不是虚函数时,其结果是未定义的。
(2)这样做会导致derived类部分的成员没有被销毁,即造成局部销毁的对象。
(3)从而造成资源泄漏,败坏之数据结构,在调试器上浪费去多时间。
记住:
(1)带多态性质的base class 应该声明一个virtual析构函数,如果base class带有任何的虚函数,那么应该声明虚析构函数。
(2)一般析构函数的调用是。最深层次的析构函数被调用,然后编译器会沿着继承的反方向,在子类的析构函数中调用父类的
析构函数
当base class 不是作为基类派生来用时,就最好不要讲析构函数设置为虚函数吗,例如string 各种容器。
(1)首先欲实现虚函数,对象必须包含某些信息,即vptr,指向虚函数表的指针。会加大对象内存
(2)不方便程序的移植。(例如移植到C语言实现的平台上)。
最新文章
- VTID配置
- java Iterator Fail-fast机制
- inux下文件权限设置中的数字表示权限,比如777,677等,这个根据什么得来的
- [HDOJ2717]Catch That Cow
- phpMyAdmin 跨站脚本漏洞
- mysql 简单的增删改查语句
- 基于Hadoop技术实现的离线电商分析平台(Flume、Hadoop、Hbase、SpringMVC、highcharts)
- Java数据结构与算法(21) - ch09红黑树(RB树)
- JS 中 Class - 类创建
- iOS 创建一个在退出登录时可以销毁的单例
- 关于今天esp8266运行失控问题和oled与串口共存尝试成功的总结
- JAVA_SE基础——25.面向对象练习
- android4.2添加重启菜单项
- Java知多少(39)interface接口
- JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了。
- 分享一套简单的CodeSmith三层模板
- jQuery的attr方法处理checkbox的问题
- Insert Delete GetRandom O(1)
- go语言从零学起(一) -- 文档教程篇
- Workflow_工作流的基本元素(概念)