zoukankan      html  css  js  c++  java
  • 35、C++中的重载、重写(覆盖)和隐藏的区别

    (1)重载(overload)

    重载是指在同一范围定义中的同名成员函数才存在重载关系。主要特点是函数名相同,参数类型和数目 有所不同,不能出现参数个数和类型均相同,仅仅依靠返回值不同来区分的函数。重载和函数成员是否 是虚函数无关。举个例子:

    (2)重写(覆盖)(override)

    重写指的是在派生类中覆盖基类中的同名函数,重写就是重写函数体,要求基类函数必须是虚函数且:

    1.与基类的虚函数有相同的参数个数

    2.与基类的虚函数有相同的参数类型

    3.与基类的虚函数有相同的返回值类型

    重载与重写的区别:

    1.重写是父类和子类之间的垂直关系,重载是不同函数之间的水平关系

    2.重写要求参数列表相同,重载则要求参数列表不同,返回值不要求

    3.重写关系中,调用方法根据对象类型决定,重载根据调用时实参表与形参表的对应关系来选择函数 体

    (3)隐藏(hide)

    隐藏指的是某些情况下,派生类中的函数屏蔽了基类中的同名函数,包括以下情况:

    1.两个函数参数相同,但是基类函数不是虚函数。和重写的区别在于基类函数是否是虚函数。举个例 子:

    2.两个函数参数不同,无论基类函数是不是虚函数,都会被隐藏。和重载的区别在于两个函数不在同 一个类中。举个例子:

  • 相关阅读:
    oracle里某列插入多行数据
    子类与父类的一些关系
    math.round()的值怎么取的
    oracle replace函数
    spring5.1.5使用的jackson依赖版本
    eclipse设置新建jsp页面的默认编码为utf-8
    c3p0启动失败
    sql的左联右联合内联的区别
    eclipse安装spring tools插件的问题
    HTML点击按钮button跳转页面的四种方法
  • 原文地址:https://www.cnblogs.com/crbhf/p/14923522.html
Copyright © 2011-2022 走看看