在c++中的虚函数中,虚析构函数什么时候会用到?

在c++中,虚函数很有讲究,静态函数不能为虚函数,还有构造函数也不能作为虚函数,但是析构函数却可以,这些和对象有关系,因为虚函数依赖的是对象,这里哪些可以成为虚函数到是了解,但是这个虚析构函数什么时候会被用到呢?

4个回答

继承的时候,基类(父类)的析构函数为虚函数,子类在释放的时候会调用基类(父类)的析构函数

1.继承
2.像普通析构函数一样 当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。

首先,如果一个类的析构函数是虚析构函数,则它所有派生类的析构函数都是虚析构函数;其次再说调用,假设基类没有声明虚析构函数,
并且我们用派生类对象初始化了基类对象,那么通过基类指针删除派生类对象时就会调用基类的析构函数,派生类的析构函数不会执行,造
成的结果是派生类中动态分配的内存空间得不到释放,造成内存泄漏。所有,解决这个问题的方法就是,声明基类析构函数为虚函数,则在
删除对象时会去调用派生类的析构函数。
补充:
如果基类和公有继承的派生类中声明了返回值,参数,名称都相同的函数成员A,如果使用基类指针调用这个函数A,就只能访问到基类的函
数A,不会调用派生类中的函数A,哪怕使用派生类指针去初始化基类指针,基类指针还是不会调用派生类中的函数A。解决这个问题的办法
就是将基类中的函数A声明为虚函数,这样即使使用基类指针,也会访问到派生类的函数A,这就是多态的一种实现。这样看来,虚析构函数
调用的规则和普通虚成员函数的调用规则就很相近了。
(注:这是我在宏观上的理解,希望可以帮助到你,希望采纳哦)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问