首页 > 其他分享 >类与对象——多态

类与对象——多态

时间:2022-09-07 22:15:16浏览次数:72  
标签:函数 对象 多态 静态 地址 animal class

 多态的基本概念

多态是C++面向对象三大特性之一

多态分为两类

  • 静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名
  • 动态多态: 派生类和虚函数实现运行时多态

静态多态和动态多态区别:

  • 静态多态的函数地址早绑定 - 编译阶段确定函数地址
  • 动态多态的函数地址晚绑定 - 运行阶段确定函数地址
 1 #include <iostream>
 2 using namespace std;
 3 //animal class
 4 class animal
 5 {
 6 public:
 7     //虚函数
 8     virtual void speak()
 9     {
10         cout << "动物在说话" << endl;//不加virtual就是早绑定,加了就是晚绑定
11     }
12 };
13 //cat class
14 class cat : public animal
15 {
16 public:
17     //重写 函数返回值类型 函数名 参数列表 完全相同
18     void speak()
19     {
20         cout << "小猫在说话" << endl;
21     }
22 };
23 //dog class
24 class dog : public animal
25 {
26 public:
27     void speak()
28     {
29         cout << "小狗在说话" << endl;
30     }
31 };
32 //执行说话的函数
33 //地址早绑定 在编译阶段确定函数地址
34 //如果想执行让猫说话 那么这个函数地址就不能提前绑定 需要在运行阶段进行绑定,也就是地址晚绑定
35 
36 //动态多态满足条件
37 //1.得有继承关系
38 //2.子类重写父类虚函数
39 
40 //动态多态的使用
41 //父类的指针或引用 执行子类的对象
42 void dospeak(animal& Animal)//animal & Animalv= cat;
43 {
44     Animal.speak();
45 }
46 void test01()
47 {
48     cat ca;
49     dospeak(ca);
50     dog dogg;
51     dospeak(dogg);
52 }
53 int main()
54 {
55     test01();
56 }

 

标签:函数,对象,多态,静态,地址,animal,class
From: https://www.cnblogs.com/zaiyewujiang/p/16667451.html

相关文章

  • 6.JS操作BOM对象
    6.操作BOM对象(重点)浏览器介绍JavaScript和浏览器的关系JavaScript诞生就是为了能够让他在浏览器中运行BOM:浏览器对象模型windowwindow代表浏览器窗口Navigator......
  • 5.JS面向对象编程
    5.面向对象编程5.1原型对象JavaScript,java,c#。。。。类:模板对象:具体的实例原型: varuser={   name:"cc",   age:3,   sex:'男',   run:f......
  • 11.5面向对象的三大特性
    #面向对象三大特性:封装继承多态#广义得封装:#把方法和变量都封装在类中#比如人狗大战#规范创建对象#创建所有人得属性名都能一致#......
  • 11.6面向对象的3个装饰器
    #比如计算学生得年龄,传生日#importtime##classStudent:##def__init__(self,name,birth):#self.birth=birth#self.name=name##@pro......
  • 10.1纯函数面向对象编程
    #人狗大战#人-角色#名称等级血量攻击力性别职业#zhangsan={'name':"zhangsan",'level':1,'hp':200,'ad':40,'性别':'不详','职业':'射手'}##l......
  • 10.2面向对象
    #面向对象语法#什么是抽象?#类-抽象的角色-具体的#我们创建类的时候会给这个类创建很多抽象的属性和名字,#具体值都是创建对象(角色)过程中体现出来的#class类名:类名......
  • 10.4类和对象的相关知识
    classFruits:discount=0.8#类变量,静态变量#当所有的变量都用到同一个属性的时候,我们定义一个类变量def__init__(self,name,price):self.nam......
  • 面向对象编程
    背景:1.游戏引擎运行于操作系统上,操作系统又运行于特定的硬件(CUP/RAM/IO)上,因此硬件的瓶颈会限制游戏引擎的性能;2.由于摩尔定律接近天花板,芯片上晶体管的密集程度再增加的话......
  • 4.JS内部对象
    4.内部对象标准对象4.1Date typeof123 'number' typeof'123' 'string' typeoftrue 'boolean' typeofNaN 'number' typeof[] 'object' typeof{} 'o......
  • Js学习之------空对象{}和null是否全等?
      null是一个空的引用,它和对象原型链的顶端全等,因为原型链的顶端就是一个空的引用而空对象虽然没有实际内容,但是它有原型链,所以两者不相等......