行业知识
【C++】从零开始认识多态
2026-11-04 00:07:09
来源:互联网转载
送给大家一句话:
一个犹豫不决的灵魂,奋起抗击无穷的忧患,而内心又矛盾重重,真实生活就是如此。 – 詹姆斯・乔伊斯 《尤利西斯》
_φ(* ̄ω ̄)ノ_φ(* ̄ω ̄)ノ_φ(* ̄ω ̄)ノ
_φ(* ̄ω ̄)ノ_φ(* ̄ω ̄)ノ_φ(* ̄ω ̄)ノ
_φ(* ̄ω ̄)ノ_φ(* ̄ω ̄)ノ_φ(* ̄ω ̄)ノ
从零开始认识多态
- 1 前言
- 2 什么是多态
- 3 多态的构成
- 3.1 协变
- 3.2 析构函数的重写
- 3.3 语法细节
- 3.4 C++11 override 和 final
- 3.5 重写(覆盖) - 重载 - 重定义(隐藏)
- 4 多态的底层实现
- 4.1 底层实现
- 4.2 验证虚表
- 5 抽象类
- 6 多继承中的多态
- 一般的多继承
- 菱形继承和菱形虚拟继承
- Thanks♪(・ω・)ノ谢谢阅读!!!
- 下一篇文章见!!!
1 前言
面向对象技术(oop)的核心思想就是封装,继承和多态。通过之前的学习,我们了解了什么是封装,什么是继承。
封装就是对将一些属性装载到一个类对象中,不受外界的影响,比如:洗衣机就是对洗衣服功能,甩干功能,漂洗功能等的封装,其功能不会受到外界的微波炉影响。
继承就是可以将类对象进行继承,派生类会继承基类的功能与属性,类似父与子的关系。比如水果和苹果,苹果就有水果的特性。
接下来我们就来了解学习多态!
2 什么是多态
多态是面向对象技术(OOP)的核心思想,我们把具有继承关系的多个类型称为多态类型,通俗来讲:就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。
举个例子:就拿刚刚结束的五一假期买票热为例,买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优先买票。同样一个行为在不同的对象上就有不同的显现。
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。
#includeusing namespace std;class Person {public:virtual void BuyTicket() { cout public:virtual void BuyTicket() { cout p.BuyTicket();}int main(){Person p;Student s;//同一个函数对不同对象有不同效果Func(p);Func(s);return 0;}};class B : public A {};//这里明显返回类型不同但是结构仍然正常class Person {public:virtual A* BuyTicket() { cout public:virtual B* BuyTicket() { cout public:~Person() { cout public:~Student() { cout Person p;Student s;return 0;}//Person p;//Student s;//基类可以指向基类 也可以指向派生类的基类部分Person* p1 = new Person ;//通过切片来指向对应内容Person* p2 = new Student;delete p1;delete p2;return 0;}public:~Person() { cout public:Student() { int* a = new int[100000000]; }~Student() { cout for(int i = 0; i
上一篇:游戏破坏服务器怎么办?