若使用基类指针delete派生类对象,需将基类和派生类的析构函数声明为virtual

在多态环境中,使用基类指针删除派生类对象时,确保基类和派生类析构函数为virtual至关重要。否则,可能会导致未定义的行为、运行时错误或内存泄露。当析构函数皆为virtual时,程序能正确调用派生类和基类的析构,避免问题发生。
摘要由CSDN通过智能技术生成

    在多态的设计中,如果准备使用基类指针delete派生类对象,需将基类和派生类的析构函数声明为virtual,否则程序将无法按预期工作。

几种写法产生的运行结果如下:
1、基类和派生类析构任一个为virtual,另一个非virtual,程序行为未定义,一般会产生运行时错误。
2、基类和派生类析构都为非virtual,只有基类的析构被调用,派生类的析构不会被调用,一般会引起内存泄露。
3、基类和派生类析构都为virtual,程序正常工作,派生类和基类的析构函数先后被调用。

#include  < iostream >
using   namespace  std;

class  CA
{
public:
    CA()
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值