原文:C++中为什么要将析构函数定义成虚函数

构造函数不可以是虚函数的,这个很显然,毕竟虚函数都对应一个虚函数表,虚函数表是存在对象内存空间的,如果构造函数是虚的,就需要一个虚函数表来调用,但是类还没实例化没有内存空间就没有虚函数表,这根本就是个死循环。 可是析构函数却要定义成虚函数,这是为什么呢,写一个非常简单的例子来理解一下: 输出结果: 所以可以看出,派生类对象构造的时候先调用基类的构造函数再调用派生类的构造函数,析构的时候先调用派生类 ...

2016-08-03 17:06 0 5274 推荐指数:

查看详情

析构函数为什么要定义函数

结论:   实现多态时,我们通过基类指针指向子类对象,在delete基类指针时,我们希望先调用子类的析构函数,再调用父类的析构函数,要实现这个目的,析构函数就必须定义函数,否则只会调用父类的析构函数,子类的析构函数不会被调用。 实验1:析构函数定义函数 运行 ...

Tue Apr 27 03:59:00 CST 2021 0 233
C++基类的析构函数定义函数的原因

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

Tue Feb 19 20:00:00 CST 2019 0 934
(转)=========C++析构函数可以为纯函数吗?

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

Mon Jul 03 23:44:00 CST 2017 0 1220
[C++]析构函数的作用

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

Thu Dec 27 19:30:00 CST 2018 1 1789
C++基类的析构函数为什么要用virtual析构函数

知识背景 要弄明白这个问题,首先要了解下C++的动态绑定。 关于动态绑定的讲解,请参阅: C++的动态类型与动态绑定、函数、多态实现 正题 直接的讲,C++基类采用virtual析构函数是为了防止内存泄漏。具体地说 ...

Wed Aug 31 18:32:00 CST 2016 1 33099
C++析构函数的作用

C++析构函数到底什么时候有用的,什么作用呢。 总的来说析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类堆内存的目的,而防止内存泄露的。 两段代码: 运行 ...

Tue Jul 29 17:12:00 CST 2014 1 13637
C++析构函数

我知道,对于存在函数的基类,一般需要将基类的析构函数定义函数,从而实现资源的合理释放,而且我也知道派生类在重载时,只需要清理自己的对象,不过,有时候还是会有些疑惑感,所以写了一个简单的例子,来消除疑惑。下面是实例内容: 下面是调用的地方的代码: 这种情况下 ...

Wed May 02 18:29:00 CST 2018 0 4331
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM