C++之多态学习笔记

文章目录

  • 一、多态是什么?
  • 二、多态相关知识
    • 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++中多态的相关知识,希望对大家有一些帮助

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值