C++面向对象之----多态

本文详细介绍了C++中的多态特性,包括多态构成条件、虚函数的重写与C++11的`override`和`final`关键字,以及抽象类和多态的原理。通过实例解释了虚函数如何实现动态绑定,并探讨了多继承中的虚表。文章最后总结了多态的重要性以及为何多态调用必须通过父类指针或引用进行。
摘要由CSDN通过智能技术生成

生活中我们是否会见到这样的场景,比如说我们想要去某个景区玩玩,再买票的时候,门口就有着学生半价,成人是全票,小孩免费什么的。对于这种场景,我们肯定不会对每一种人群写一个专门的函数,这样代码的复用性就变得很差。
在这里插入图片描述
这个时候就需要使用多态来解决

多态

通俗的来说,多态就是一个事物的多个形态。当我们想要实现某个功能时,对于这个功能的不同对象都有着不同的状态。

这有个常见的例子,就是买票。经常会看的成人全票,学生证半价的情况。针对这种情况,定义两个多态的成员类

class People
{
   
public:
	virtual void BuyTicket()
	{
   
		cout << "成人,买全价票" << endl;
	}
};

class Student:public People
{
   
public:
	virtual void BuyTicket()
	{
   
		cout << "学生,买半价票" << endl;
	}
};

函数调用的方法

void Buy(People* Pobj)
{
   
	Pobj->BuyTicket();
}

void text1()
{
   
	People Pobj;
	Student Sobj;

	//成人
	Buy(&Pobj);

	//学生
	Buy(&Sobj);
}

结果
在这里插入图片描述

多态构成条件

  1. 必须通过父类的指针或者引用调用虚函数
  2. 被调用的函数必须是虚函数(virtual),并且子类必须对父类的虚函数进行重写

虚函数

virtual修饰的类成员函数称为虚函数

class People
{
   
public:
	virtual void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值