有继承关系时,基类的析构函数是否要定义为虚函数?(这一篇就够了)

本文通过实例探讨了在C++中,当有继承关系时,基类析构函数定义为虚函数的重要性。通过分析不同指针生成对象后析构的内存管理情况,解释了非虚析构函数导致的内存泄露问题,以及虚析构函数如何确保正确释放内存。总结得出,为基类析构函数添加virtual关键字是避免内存泄露的有效策略。
摘要由CSDN通过智能技术生成

析构函数是类中一个重要的函数,用于释放类对象使用的资源,并销毁对象的非static数据成员。当类对象被销毁时,会自动调用其析构函数,销毁对象的所有非静态的数据成员,从而避免内存泄露。 对于C++初学者,当有继承关系时,由于析构函数掌握不够,容易在销毁对象时造成内存泄露。以下从销毁对象时发生内存泄露的情况、解决内存泄露的两种方法及原理来帮助读者掌握析构函数。

首先,写一个Child类继承Base类:

#include<iostream>
using namespace std;

class Base
{
   
public:
	Base() {
    cout << "Base的构造函数" << endl; }

	~Base() {
    cout << "Base的析构函数" << endl; }
};

class Child:public Base
{
   
public:
	Child() {
    cout << "Child的构造函数" <<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值