zoukankan      html  css  js  c++  java
  • C++的重载(overload)、重写(override)、重定义(redefine)

    C++由于函数的名字相同,导致的几种不同的情况:

    1,overload:重载;

    重载是函数实现多态的一种方式,重载针对的是在同一个作用域(类)中,函数名相同的情况。如果,函数的特征标不同,即函数的参数个数或者类型不同,或者类型的顺序不同,那么,该函数就被重载了,能够根据不同的参数调用不同的函数。

    2,override:重写;

    重写涉及到继承的概念,即如果一个函数在基类中被指明是 virtual函数,那么,在其子类中,如果某个函数的名字,参数的特征标相同,那么子类就重写了基类的虚函数,能够根据对象的不同调用父类或者子类的函数。

    3,redefine:重定义;

    重定义可能和上述两种情况混淆。上述重载和重写都有具体的目的,都是实现多态的方式。本来,子类是能够继承父类所有的成员函数的,但是如果父类定义是虚函数,那么子类就可以重写这个函数实现相同函数名称不同的功能,但是如果不能够实现重写所必须的条件:(1)父类必须是虚函数(2)函数的特征标和返回值必须相同,那么如果在子类中定义了一个同名的父类函数,那么父类函数就被隐藏了,子类不能继承该函数了。这样它就包括了这几种情况:如果父类不是虚函数,那么无论特征标返回值是否相同,父类函数被隐藏;如果父类是虚函数,且特征标返回值相同就是重写,如果不同就是重定义。

  • 相关阅读:
    我的后端开发书架2015 2.0版
    Java根据字节数据判断文件类型
    基于lucene的案例开发:查询语句创建PackQuery
    Web 前沿——HTML5 Form Data 对象的使用
    基于HTML5的可预览多图片Ajax上传
    【面试】Spring问答Top 25
    【劳动节江南白衣Calvin 】我的后端开发书架2015
    【转载】Java 动态代理
    使用iframe给页面的localStorage扩容
    js中的||和&&使用技巧
  • 原文地址:https://www.cnblogs.com/elseliving/p/4841124.html
Copyright © 2011-2022 走看看