原文:C++中基类的析构函数为什么要用virtual虚析构函数

知识背景 要弄明白这个问题,首先要了解下C 中的动态绑定。 关于动态绑定的讲解,请参阅: C 中的动态类型与动态绑定 虚函数 多态实现 正题 直接的讲,C 中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数, ...

2016-08-31 10:32 1 33099 推荐指数:

查看详情

C++基类析构函数定义为函数的原因

1:每个析构函数只会清理自己的成员(成员函数前没有virtual)。2:可能是基类的指针指向派生类的对象,当析构一个指向派生类的成员的基类指针,这时程序不知道这么办,可能会造成内存的泄露,因此此时基类析构函数要定义为函数基类指针可以指向派生类的对象(多态),如果删除该指针delete[]p ...

Tue Feb 19 20:00:00 CST 2019 0 934
c++为什么基类析构函数要写成析构函数

答:在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 代码说明如下 第一段代码: 运行结果: Do something in class ClxDerived! Output from the destructor ...

Sun May 10 01:39:00 CST 2020 0 631
有继承的C++析构函数一定要用virtual

先补下virtual是啥 函数是指一个类你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个函数,实际调用的是继承类的版本。 先贴个代码,再解释 在代码尾部的注释就是输出。 Base的析构函数没有virtual Base1 ...

Tue Oct 23 17:41:00 CST 2012 2 4680
[C++]析构函数的作用

转载自: https://blog.csdn.net/derkampf/article/details/62093252 C++析构函数到底什么时候有用的,什么作用呢。 一.析构函数的作用 总的来说析构函数是为了避免内存泄露 ...

Thu Dec 27 19:30:00 CST 2018 1 1789
为什么基类析构函数函数

注:本文章内容大部分来自网站整理。 1.为什么基类析构函数函数?   在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。   下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c ...

Wed Jul 11 00:06:00 CST 2012 0 5171
(转)=========C++析构函数可以为纯函数吗?

转载自:http://blog.csdn.net/yapian8/article/details/46418687 众所周知,在实现多态的过程,一般将基类析构函数设为virtual,以便在delete的时候能够多态的链式调用。那么析构函数是否可以设为纯呢? class CBase ...

Mon Jul 03 23:44:00 CST 2017 0 1220
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM