1、覆盖

覆盖也称为重写(override)。

覆盖是存在类中,子类重写从基类继承过来的函数,函数名、返回值、参数列表都必须和基类相同。

当子类的对象调用成员函数的时候,如果成员函数有被覆盖则调用子类中覆盖的版本,否则调用从基类继承过来的函数。

如果子类覆盖的是基类的虚函数,则可以用来实现多态。当子类重新定义基类的虚函数之后,基类指针可以根据赋给它不同子类指针动态的调用子类中的虚函数,做到动态绑定,这就是多态。

2、重载

重载指允许在相同作用域中存在多个同名的函数,这些函数的参数表不同,编译器根据函数不同的形参表对同名函数的名称做修饰,然后这些同名函数就成了不同的函数。如:

  1. void Fun(int a);
  2. void Fun(double a);
  3. void Fun(int a, int b);
  4. void Fun(double a, int b);

重载要求参数列表必须不同,比如参数类型不同、参数个数不同、参数顺序不同。如果仅仅是函数的返回值不同是没办法重载的。如:

  1. int Fun(int a)
  2. void Fun(int a)

函数被C++编译后在符号库中的名字与C语言的不同。假设某个函数的原型为:

  1. void foo( int x, int y);

该函数被C编译器编译后在符号库中的名字为_foo;而C++编译器则会产生像_foo_int_int之类的名字。

这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。

3、重载与覆盖的区别

  • 重载要求函数名相同,但是参数列表必须不同;覆盖要求函数名、参数列表、返回值必须相同。
  • 重载描述的是同一个类中不同成员函数之间的关系;覆盖是子类和基类之间不同成员函数之间的关系。
  • 重载的确定是在编译时确定,是静态的;虚函数则是在运行时动态确定。

C++覆盖和重载的区别相关推荐

  1. Java习题3(1.封装的意义有哪些?2.final关键字的作用有哪些?3. 简述覆盖与重载的区别。4. 写一个冒泡排序算法。)

    1.封装的意义有哪些? 答: 将对象成员保护起来,使用接口对外公开,安全性更高. 读取.修改对象属性更加方便,更具有灵活性. 增加.删除对象属性在对应类中进行操作即可,不影响其他类,可维护性好. 2. ...

  2. C++成员函数重载、覆盖和隐藏的区别

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  3. java重写(覆盖)与重载的区别

    java重写(覆盖)与重载的区别 1.重写(覆盖Override) 重写发生在接口与实现类,父类与子类之间,特点如下: 方法名,返回值类型必须相同,参数列表必须相同 访问权限只能等于或者大于父类的访问 ...

  4. J2EE 重载跟覆盖的概念以及区别

    方法的重载(overload)和覆盖(override) 有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println() ...

  5. CAD中插入外部参照字体会变繁体_CAD外部参照的附加型和覆盖型有什么区别?

    CAD插入外部参照时可选择两种方式:附加型和覆盖型,可能不少人并没有关注到参照类型,有些网友关注到了,但在看过公众号之前发布的介绍外部参照文章后还是没太弄明白.这两个类型确实不太好理解,有必要在通过一 ...

  6. 重写与重载的区别与作用

    重写与重载的区别与作用 一.重写(Override) 也就是子类重新编写,或覆盖父类继承下来的方法,也叫方法覆盖,主要用于当父类提供的方法无法满足子类需求时,可在子类中定义和父类相同的方法进行重写. ...

  7. java重写和重载 关键字_Java重写和重载的区别

    一.重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 二.重载(Overload) 重载(overloading) 是 ...

  8. Java知多少(29)覆盖和重载

    在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称.返回值类型.参数列表. 如果在新类中定义一个方法,其名称.返回值类型和参数列表正好与父类 ...

  9. 重写与重载的区别 以及 重写中super的使用

    重写是父类方法与子类方法有共同的参数名参数列表,返回类型必须父类的方法一致.子类的访问修饰符一定要大于等于父类的访问修饰符.如果在子类中还需要用到父类的方法,用super.method() 然后继续写 ...

最新文章

  1. 企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)(原创)
  2. 基于图像的三维模型重建——稠密点云重建
  3. 【原创】.NET Core应用类型(Portable apps Self-contained apps)
  4. Exchange 2013CU17和office 365混合部署-设置属性筛选(三)
  5. SAP FICO 固定资产会计 功能详解
  6. 2018南邮全国计算机大赛,我院承办2018全国大学生物联网设计竞赛(TI杯)南京邮电大学选拔赛...
  7. PR转场插件 MAC版 FilmImpact Transition Pack v1-v2
  8. 动画练习-360度旋转-animation
  9. DataFrame-删除行列
  10. supermap java,SuperMap iObjects Java 10i 产品介绍
  11. 最短路径算法 | Bellman-Ford Algorithm
  12. ThingsBoard 规则引擎-邮件通知
  13. python计算FID
  14. 郭平欣老先生在恢复中
  15. java的Map接口
  16. 2018 美团校招笔试题详解
  17. Unity基础之EasyAR
  18. WebRTC回声抵消模块简要分析
  19. 跟我一起做一个vue的小项目(九)
  20. Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择

热门文章

  1. matplotlib练习
  2. linux——系统排错之引导恢复shell
  3. Python使用proj将GPS经纬度数据转换为utm坐标系(真实的地理位置坐标系,以米为单位),然后可以进行轨迹显示
  4. Java PriorityQueue优先队列详解(源码+图文步骤解析)
  5. spring bean的生命周期和创建流程
  6. qq空间网页版电脑_常用QQ软件,电脑C盘快满了,占用太多空间,如何快速清理?...
  7. android x86一键安装,安卓
  8. sql is null优化_你不会还在用这8个错误的SQL写法吧?
  9. access超过255列数据_Access的数据类型,与Excel虽类似,数据库+sql更适合大量数据管理...
  10. windbg网络双机内核调试