虚函数是在基类中定义的,目的是不确定它的派生类的具体行为。例: 定义一个基类:class Animal//动物。它的函数为breathe()//呼吸。 再定义一个类class Fish//鱼 。它的函数也为breathe() 再定义一个类class Sheep //羊。它的函数也为breathe() 为了简化代码,将Fish,Sheep定义成基类Animal的派生类。 然而Fish与Sheep的breathe不一样,一个是在水中通过水来呼吸,一个是直接呼吸空气。所以基类不能确定该如何定义breathe,所以在基类中只定义了一个virtual breathe,它是一个空的虚函数。具本的函数在子类中分别定义。程序一般运行时,找到类,如果它有基类,再找它的基类,最后运行的是基类中的函数,这时,它在基类中找到的是virtual标识的函数,它就会再回到子类中找同名函数。派生类也叫子类。基类也叫父类。这就是虚函数的产生,和类的多态性(breathe)的体现. 这里的多态性是指类的多态性。 函数的多态性是指一个函数被定义成多个不同参数的函数,它们一般被存在头文件中,当你调用这个函数,针对不同的参数,就会调用不同的同名函数。例:Rect()//矩形。它的参数可以是两个坐标点(point,point)也可能是四个坐标(x1,y1,x2,y2)这叫函数的多态性与函数的重载。

转载于:https://www.cnblogs.com/hao02171990/p/3287969.html

对于基类和派生类中的多态及重载的最好解释方法相关推荐

  1. C++中基类与派生类的构造函数和析构函数

    1.Cpp中的基类与派生类的构造函数 基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承.构造函数不能被继承是有道理的,因为即使继承了,它的名字和 ...

  2. c++中基类与派生类中隐含的this指针的分析

    先不要看结果,看一下你是否真正了解了this指针? 1 #include<iostream> 2 using namespace std; 3 4 class Parent{ 5 publ ...

  3. python根据一个基类生成派生类_python中的封装继承多态

    1.封装 类的封装可以隐藏类的实现细节,迫使用户只能通过方法去访问数据,这样就可以增强程序的安全性.接下来演示未使用封装可能出现的问题,如例所示. 在例中,运行结果输出的成绩为-68,在程序中不会有任 ...

  4. 派生类到基类的转换 和基类到派生类的转换

    一. 基类与派生类的转换     3种继承方式(公用.保护.私有继承)中,公用派生类才是基类真正的子类型,它完整地继承了基类的功能.     不同类型数据之间在一定条件下可以进行类型的转换.基类与派生 ...

  5. C++:基类和派生类

    4.1 派生类的声明 继承实例如下: class Person{ //声明基类Person public:void print(){cout<<"name:"<& ...

  6. 基类与派生类之间的转换关系

    一. 派生类到基类的转换: 1.可以使用派生类指针初始化基类指针,同样也可以使用派生类的引用或对象初始化基类的引用,注意这里提到的是对象的指针和引用而不是对象本身: (但是,在使用基类指针(或引用)指 ...

  7. 构造函数怎么在主函数调用_C++ 虚基类及其派生类构造函数(学习笔记:第7章 12)...

    虚基类及其派生类构造函数[1] 建立对象时所指定的类称为最远派生类. 虚基类的成员是由最远派生类的构造函数通过调用虚基类的构造函数进行初始化的. 在整个继承结构中,直接或间接继承虚基类的所有派生类,都 ...

  8. 基类与派生类的类型转换

    类型转换规则: 公有派生类对象可以被当作基类的对象使用,反之则不可 派生类的对象可以隐含转换为基类对象 派生类的对象可以初始化基类的引用 派生类的指针可以隐含转换为基类的指针 通过基类对象名,指针只能 ...

  9. java基类和派生类圆_java – 当基类和派生类都具有相同名称的变量时会发生什么...

    在这些类中考虑int变量: class Foo { public int a = 3; public void addFive() { a += 5; System.out.print("f ...

最新文章

  1. Spring实战3-Spring之旅
  2. centos08-Linux服务器上发布java项目
  3. 组合数 com(n,r)
  4. Windows 令人“社死”的新功能,你都知道吗?
  5. slf4j注解log报错_SpringBoot自定义日志注解,用于数据库记录操作日志,你用过吗?...
  6. python作用域的理解-理解Python的UnboundLocalError(Python的作用域)
  7. canvas图形编辑器
  8. Python二级笔记(18,19合集知识点篇)
  9. 使用脚本删除ios工程中未使用图片
  10. mysql socket错误处理_Mysql 报错处理
  11. WebShell脚本检测机器学习二
  12. 《EDA技术与Verilog HDL设计》第4、5 章读书笔记与总结
  13. 电子科大+矩阵理论+总复习知识点总结
  14. VMware ESXI7.0的安装与配置(全过程超详细含中英文对照,附应知必会的理论基础和常见故障解决方案)
  15. 设计模式(一) 简单工厂模式
  16. blender 2.8的基本使用和使用形态键(Shape key)做帧动画
  17. Java课程设计——仓库商品管理系统
  18. 计算机一级wps必背知识点,计算机一级WPSoffice考前复习题
  19. 岛屿问题和昆虫越障问题以及岛屿最大面积
  20. Scratch基础教学之孙悟空的吹毛变猴

热门文章

  1. parallelstudio license 位置_UAV位置测量仪器Apogee-D Dual GPS INS
  2. 正态分布的前世今生:正态魅影
  3. hdfs读写流程_一篇文章搞清楚 HDFS 基本原理
  4. 图像局部特征(九)--斑点检测LOG算子
  5. ECG的滤波和检波资源汇总
  6. Java -考研 学习路线(笔记链接汇总)-个人用
  7. Vue- Markdown 使用大全
  8. python 的文件类操作
  9. 计算机系统基础知识——校验码之海明码(Hamming Code)
  10. 下面对html描述正确的有多选题,YS - 《网页制作》复习题(多选题)