浅谈-----虚函数、纯虚函数、基类析构虚函数

虚函数

//C++的多态性通过虚函数来体现,体现为类与类直接的继承关系--》子类完成对基类的重写。

//定义基类(具有一定包容性)部分成员函数写为虚函数。

//定义子类、集成基类、并且重写 虚函数。(对比基类的包容性、子类有具体性)

//一个demo

class  BaseA
{
private:
    /* data */
public:
     BaseA(/* args */){}
    ~ BaseA(){}
    //虚函数标准virtual 
    //只能是成员函数定义为虚函数、构造不可以、析构可以,而且析构一般默认声明为虚函数,后文会解释
    virtual void foo(){
        printf("Base A foo")
    }
};

class B:public BaseA
{
private:
    /* data */
public:
    void foo(){
    printf("B foo");
    }
};


总结

1、虚函数实现、如果子类不提供foo的实现,将缺省调用A类foo的实现。

2、虚函数基类需要提供基本实现。

3、子类重新实现的过程定为重写(override)--引申重载是同名函数不同参数的实现。

纯虚函数

引入纯虚函数--》 改变基类 virtual void foo() = 0; 子类实现方式不变化。

1、纯虚函数 = 0 基类不提供实现。子类需要提供实现,无缺省。

目的: 代码模块化、便于扩展和集成、耦合度较低



析构虚函数

声明基类的时候的,在析构函数前+ virtual

析构函数目的:内存释放、防止泄露、

析构虚函数:使得删除指向子类的对象的指针时候,调用子类析构,达到释放子类堆内存的目的,防止调用基类析构,导致内存泄露。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值