c++析构函数 析构函数为什么是虚函数?

析构函数为什么是虚函数?使用delete PA指向基类引用时,释放PA引用的内存,PA引用B object,为什么不调用B的析构函数呢?这里,由于是静态绑定,当B在编译时确定了它指向的函数时,它不会根

析构函数为什么是虚函数?

使用delete PA指向基类引用时,释放PA引用的内存,PA引用B object,为什么不调用B的析构函数呢?这里,由于是静态绑定,当B在编译时确定了它指向的函数时,它不会根据对象a来确定它指向的函数,这样,如果B申请内存资源,但不释放析构函数中的资源,就会导致内存泄漏。

仔细想想,这不是虚拟功能的原因吗?

添加了虚拟机制。编译时,虚拟机会自动将方法指向B的地址,通过设置机制可以找到B的析构函数。

为了改变这一点,有一个虚拟析构函数

只要基类的析构函数设置为virtual type,所有派生类都会自动将析构函数设置为virtual type,以确保不会因为没有调用析构函数而导致内存泄漏。

在c 中有没有纯虚构造函数?在c 中纯虚析构函数的作用是什么?

有纯虚拟功能,纯虚拟破坏。我从没听说过纯虚拟结构。

虚函数是父类的成员函数,后跟虚函数

纯虚函数是虚函数,后跟A=0;(如果不想在虚函数中写入任何内容,可以将其设为纯虚)

虚析构函数,后跟虚析构函数,是纯虚析构函数,后面是a=0。此外,还需要在类外部编写一个空的析构函数实现。

(我觉得纯粹的虚拟解构是无用的。人的纯虚函数=0就是不用写就实现了。解构是不可避免的。既然你要解构,你就得省去写作,然后在课堂上做一个空洞的解构。为什么?