C++ //多态 //静态多态:函数重载 和 运算符重载 属于静态多态 ,复用函数名 //动态多态:派生类和虚函数实现运行时多态
1 //多态
2 //静态多态:函数重载 和 运算符重载 属于静态多态 ,复用函数名
3 //动态多态:派生类和虚函数实现运行时多态
4
5 //静态多态和动态多态的区别
6 //静态多态的函数地址早绑定 - 编译阶段确定函数地址
7 //动态多态的函数地址晚绑定 - 运行阶段确定函数地址
8
9 //动态多态
10 //1.有继承关系
11 //2.子类要重写父类的虚函数
12
13 //动态多态使用
14 //父类的指针或这引用 指向子类的对象
15
16 #include <iostream>
17 #include <string>
18 using namespace std;
19
20 //多态
21
22 //动物类
23 class Animal
24 {
25 public :
26 virtual void speak() //虚函数
27 {
28 cout << "动物在说话" << endl;
29 }
30
31 };
32 //猫类
33 class Cat : public Animal
34 {
35 public:
36 //重写 函数返回值类型 函数名 参数列表 完全相同
37 void speak()
38 {
39 cout << "小猫在说话!" << endl;
40 }
41 };
42
43 //狗类
44 class Dog : public Animal
45 {
46 public:
47 void speak()
48 {
49 cout << "小狗在说话!" << endl;
50 }
51 };
52
53 //执行说的函数
54 //地址早绑定 在编译阶段确定了函数地址
55 //如果执行让猫说话,那么这个函数地址不能提前绑定,需要在运行阶段进行绑定,地址晚绑定
56
57 void doSpeak(Animal& animal) //Animal &animal = cat;
58 {
59 animal.speak();
60 }
61
62 void test01()
63 {
64 Cat cat;
65 doSpeak(cat);
66
67 Dog dog;
68 doSpeak(dog);
69 }
70
71 int main()
72 {
73
74 test01();
75
76
77 system("pause");
78
79 return 0;
80
81 }

C++ //多态 //静态多态:函数重载 和 运算符重载 属于静态多态 ,复用函数名 //动态多态:派生类和虚函数实现运行时多态的更多相关文章
- C++基类、派生类、虚函数的几个知识点
1.尽管派生类中含有基类继承来的成员,但派生类初始化这部分变量需要调用基类的构造函数. class A { private: int x; virtual void f(){cout<<& ...
- C++中的动态类型与动态绑定、虚函数、运行时多态的实现
动态类型与静态类型 静态类型 是指不需要考虑表达式的执行期语义,仅分析程序文本而决定的表达式类型.静态类型仅依赖于包含表达式的程序文本的形式,而在程序运行时不会改变.通俗的讲,就是上下文无关,在编译时 ...
- C++:成员运算符重载函数和友元运算符重载函数的比较
5.2.4 成员运算符重载函数和友元运算符重载函数的比较 (1)对双目运算符而言,成员运算符重载函数参数表中含有一个参数,而友元运算符重载函数参数表中有两个参数:对于单目运算符而言,成员运算符重载函数 ...
- C++:运算符重载函数之友元运算符重载
5.2.2 友元运算符重载函数 运算符重载函数一般采用两种形式定义: 一是定义为它将要操作的类的成员函数(简称运算符重载函数): 二是定义为类的友元函数(简称为友元运算符重载函数). 1.定义友元运算 ...
- C++基础 学习笔记五:重载之运算符重载
C++基础 学习笔记五:重载之运算符重载 什么是运算符重载 用同一个运算符完成不同的功能即同一个运算符可以有不同的功能的方法叫做运算符重载.运算符重载是静态多态性的体现. 运算符重载的规则 重载公式 ...
- 深入浅出OOP(三): 多态和继承(动态绑定/运行时多态)
在前面的文章中,我们介绍了编译期多态.params关键字.实例化.base关键字等.本节我们来关注另外一种多态:运行时多态, 运行时多态也叫迟绑定. 运行时多态或迟绑定.动态绑定 在C#语音中,运行时 ...
- [置顶] operator overloading(操作符重载,运算符重载)运算符重载,浅拷贝(logical copy) ,vs, 深拷贝(physical copy)
operator overloading(操作符重载,运算符重载) 所谓重载就是重新赋予新的意义,之前我们已经学过函数重载,函数重载的要求是函数名相同,函数的参数列表不同(个数或者参数类型).操作符重 ...
- C++ - 虚基类、虚函数与纯虚函数
虚基类 在说明其作用前先看一段代码 class A{public: int iValue;}; class B:public A{public: void bPrintf(){ ...
- C++ 类中有虚函数(虚函数表)时 内存分布
虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的.简称为V-Table.在这个表中,主是要一个类的虚函数的地址表 ...
随机推荐
- Ant Design Blazor 组件库的路由复用多标签页介绍
最近,在 Ant Design Blazor 组件库中实现多标签页组件的呼声日益高涨.于是,我利用周末时间,结合 Blazor 内置路由组件实现了基于 Tabs 组件的 ReuseTabs 组件. 前 ...
- Tomcat 中文乱码,设置UTF-8
1.修改tomcat的conf目录下 server.xml文件加上 URIEncoding="UTF-8" <Connector port="8080" ...
- css图片显示文字(上浮)
<html> <head lang="en"> <meta charset="UTF-8"> <title>&l ...
- 学习django的日子
bilibii这个网站是个学习者网站,里面有很多学习视频
- Linux:VMware配置NAT网络IP
设置虚拟机网络配置 在目标虚拟机下右键, 选择"设置", 打开"虚拟机设置"对话框, 再选择"网络适配器"使用NAT模式的, 如下图所示: ...
- Https:证书生成 .p12 .keyStore 和 .truststore文件理解
当我们需要SSL证书时,可以自动生成SSL证书,但是每个系统都申请一次证书会比较麻烦,所以用到了如下几个文件格式: .p12(PKCS #12) 我们的每一个证书都可以生成一个.p12文件,这个文 ...
- Spirng boot maven多模块
https://blog.csdn.net/Ser_Bad/article/details/78433340
- TCP/UDP/HTTP的区别和联系(转载)
一.TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据. 关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:"我们在传 ...
- Java刷题常用API
目录 输入输出 快速查看 最大最小值 string stringbuilder 集合 map queue stack set 优先队列 PriorityQueue (Heap) 数组 静态数组 动态数 ...
- MySQL字符串操作函数
使用方法:concat(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. mysql> select concat('11',' ...