多态的概念及条件

目录

1.概念

2.多态的构成条件

1.被调用的函数必须是虚函数,并且在派生类中,必须对基类的虚函数进行重写

2.必须是基类的指针或引用去调用这个函数。

 3.析构函数的虚函数

4.重载,覆盖(重写) ,隐藏(重定义)的对比

​编辑final关键字

override关键字


1.概念

多态:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态。

举个栗子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人 买票时是优先买票。

2.多态的构成条件

1.被调用的函数必须是虚函数,并且在派生类中,必须对基类的虚函数进行重写

虚函数重写的条件:

(1)有三同,返回值,参数,函数名相同

(2)父类函数必须是虚函数,意思是有virtual关键字修饰子类虚函数可不加,最好加上。

特殊情况:

协变:虚函数的返回值可以不同,但是必须是父子类关系(其他父子类关系也可以)的指针或引用。

虚函数:虚函数重写重写的是实现{}里面的,他的继承是一个接口继承,重写实现。

普通函数的继承是一种实现继承,一种复用。

对于一个类里的虚函数,我们会在这个类里面存一个指针(虚函数表指针),可以通过它找到虚函数。

2.必须是基类的指针或引用去调用这个函数。

注意:这里的virtual与继承里面的virtual没关系

这里的virtual是为了完成虚函数的重写,继承那里加vritual是虚继承。

 3.析构函数的虚函数

析构函数的虚函数不需要函数名一样

因为析构函数会被编译器特殊处理,被处理成去调用 destructor()+operator delete()。

所以其实他们的函数名本质上是一样的。

4.重载,覆盖(重写) ,隐藏(重定义)的对比

final关键字

修饰虚函数,表示该虚函数不能再被重写

修饰类,表示该类不能被继承

override关键字

 检查派生类虚函数是否重写了基类某个虚函数,如果没有重写编译报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值