0
点赞
收藏
分享

微信扫一扫

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

zibianqu 2022-01-20 阅读 112

虚函数

//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 条评论