C++基础知识学习记录—多态

1、函数覆盖

函数覆盖也被称为函数重写,类似于函数隐藏函数覆盖是多态的前提条件之一

函数覆盖与函数隐藏的区别:

● 基类的被覆盖函数需要使用virtual关键字修饰,表示这个函数是一个虚函数
在Qt Creator中虚函数是斜体

虚函数的特点如下:

1、 虚函数具有传递性,当基类的某个成员函数为虚函数,派生类中的新覆盖函数(函数名称相同、参数列表相同、返回值类相关)也自动称为虚函数。

2、只有非静态成员函数可以设置为虚函数

3、如果函数声明定义分离,只需要在声明处使用virtual关键字

4、构造函数不能设置为虚函数,但是析构函数可以

2、多态的基本使用

多态是面向对象的三大特性之一,即“一个接口,多种状态”体现的是功能扩展的思想,程序在运行时根据类型的不同自动选择不同的决策方式。多态主要用于接口的设计。

多态的使用条件:

● 基类与派生类之间使用公有继承

● 基类与派生类之间要有函数覆盖

● 基类引用/指针指向派生类对象

3、虚析构函数

当基类指针或引用指向派生类对象时,对象销毁时可能会导致派生类的析构函数无法被调用,造成内存泄漏。

 解决方案是: 将基类的析构函数设置虚函数。

 建议一个类只要有作为基类的可能,就把其析构函数设置为虚析构函数。

4、抽象类 abstract

抽象类

1、抽象类只能作为基类,不能初始化对象

2、抽象类一定有纯虚函数,有纯虚函数的类一定是抽象类

纯虚函数是一个特殊的虚函数,没有函数体 语法: virtual void 函数名() = 0 ;

3、抽象类是给派生类提供算法框架。

//注意:1、派生类没有实现所有抽象基类的纯虚函数,这样的派生类也是一个抽象类。

//2、抽象类一定会作为其他类的基类,其析构函数必须设置为虚函数,因此抽象类可以支持多态。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值