一篇文章看懂C++三大特性——多态的定义和使用

本文介绍了C++中的多态性,包括多态的概念、构成条件、虚函数的作用和重写,以及override和final关键字的使用。通过实例展示了如何通过虚函数实现多态,并探讨了重载、重写和隐藏的区别。此外,还讨论了抽象类和纯虚函数在接口继承中的重要性。
摘要由CSDN通过智能技术生成

目录

前文

一,什么是多态?

1.1 多态的概念

二, 多态的定义及实现

2.1 多态的构成条件

2.2 虚函数

2.3 虚函数的重写

2.3.1 虚函数重写的两个例外

2.4 C++ override 和 final

2.5 重载,重写(覆盖),隐藏(重定义)的区别

 三,抽象类

3.1 概念

3.2 接口継承和实现継承

总结


前文

C++三大特性——封装,継承,多态,前两个我们都已经学习过了,现在让我们一起来学习最后一个特性——多态

一,什么是多态?

1.1 多态的概念

 多态其实就是多种形态,实际上就是当完成某个行动时,不同的对象完成会产生不同的状况。如上图某景点门票,大学生,普通人,儿童所需要的票价都是不一样的,这就算是多态在实际生活的一种应用。

二, 多态的定义及实现

2.1 多态的构成条件

多态是在不同継承关系的类对象,去调用同一的函数,产生了不同的行为。如上面的Student继承了Person,Person对象买全价票,Student买半价票

但是我们需要主要构成多态要满足下面两个条件(后面会讲到两个特例)

1. 被调用的函数必须是虚函数,而且子类要对父类的虚函数进行重写

2. 必须通过父类的指针或者引用调用虚函数

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
class Person
{
public:
	virtual void Buyticket()
	{
		cout << "全价票" << endl;
	}
};

class Student :public Person
{
public:
	virtual void Buyticket()
	{
		cout << "半价票" << endl;
	}
};

void Func1(Person& p)
{
	p.Buyticket();
}

int main()
{
	Person p;
	Student s;

	Func1(p);
	Func1(s);
	return 0;
}

以上面为例,我们先简单使用一下多态,上述代码具体实现如下。

 看到这里可能有的老铁很好奇,这怎么这么神奇,加一个virtual就可以实现,底层是怎么实现的?我们不要急,

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值