c++:父类的析构函数定义为纯虚函数注意事项

简介

在C++中,将基类的析构函数定义为纯虚函数是一种常见的做法,通常用于使基类成为抽象基类,从而不能直接实例化该基类。但需要注意的是,即使析构函数被声明为纯虚函数,我们也必须为其提供一个函数体(定义),否则在派生类析构时调用基类析构函数会导致链接错误。

原因:当派生类对象被析构时,会先调用派生类的析构函数,然后调用基类的析构函数。即使基类的析构函数是纯虚的,也需要有定义,因为派生类的析构函数隐式调用基类的析构函数。

示例

class Base {
public:
    // 纯虚析构函数,但需要在类外提供定义
    virtual ~Base() = 0;
};


// 必须为纯虚析构函数提供定义
Base::~Base() {
    // 可以在这里提供一些清理代码,也可以为空
}

另一种常见做法是将析构函数声明为虚函数(但不一定是纯虚函数),以确保在多态删除对象时正确调用派生类的析构函数。如果希望基类是抽象的,但又没有其他合适的函数可以声明为纯虚函数,那么将析构函数声明为纯虚函数是一种方法。但是要注意必须提供定义。

步骤

  1. 在基类中声明纯虚析构函数:virtual ~Base() = 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值