文章目录
- 一、多态是什么?
- 二、多态相关知识
- 1.多态种类
- 2.种类的区别
- 三、编程例题讲解——动物多态
- 四、总结
前言
提示:这里可以添加本文要记录的大概内容:
其实关于C++也没有学习太多的东西,也不是什么大神,就是想通过写博客来做一下关于C++学习的笔记和大家分享自己在学习C++的时候一些理解,监督一下自己和大家,共同进步。
提示:以下是本篇文章正文内容,下面案例可供参考
一、多态是什么?
多态是类的三大类:封装、继承、多态中的一类,多态多态,顾名思义就是多种形态,例如,去买票,不同的人买不同的票,成人就买成人票,学生就买学生票,儿童就买儿童票。虽然都是买票但是买的票都不同,价格也不一样。
二、多态相关知识
1.多态种类
多态分为两种:静态多态和动态多态。
静态多态:函数重载和运算符重载
动态多态:派生类和虚函数实现运行时多态(本章主要讲解的例子)
2.种类的区别
静态多态:函数地址早绑定——编译器阶段就确定了函数地址
动态多态:函数地址晚绑定——运行阶段确定函数地址
三、编程例题讲解—动物多态
用引用的方法设计一个代码基类是动物,继承为猫,两个类都有说话函数,创建一个新的执行说话函数
代码如下(示例):
#include<iostream>
using namespace std;
class Animal
{
public:
virtual void Speak()
{
cout<<"动物在说话"<<endl;
}
};
class Cat : public Animal
{
publid:
void Speak()
{
cout<<"小猫在说话"<<endl;
}
};
void doSpeak(Animal & animal)
{
animal.speak();
}
void teat01()
{
Cat cat;
doSpeak(cat);
}
int main()
{
test01();
}
四、总结
代码中的Cat cat;doSpeak(cat) 本意是想让传入谁就让谁执行Speak()函数,但是应为有静态多态Animal函数地址早绑定了,现在如果想执行让猫说话,那么这个函数地址Animal中的Speak()函数不能提前绑定,需要用到多态,在运行阶段进行绑定,把Aniaml中的Speak()函数变为虚函数,在其前面加virtual就可以了。
以上就是今天要讲的内容啦,本文以我的认识简单介绍了一下C++中多态的相关知识,希望对大家有一些帮助