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

    (1)重载(overload)

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

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

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

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

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

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

    重载与重写的区别:

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

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

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

    (3)隐藏(hide)

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

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

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

  • 相关阅读:
    LeetCode Power of Three
    LeetCode Nim Game
    LeetCode,ugly number
    LeetCode Binary Tree Paths
    LeetCode Word Pattern
    LeetCode Bulls and Cows
    LeeCode Odd Even Linked List
    LeetCode twoSum
    549. Binary Tree Longest Consecutive Sequence II
    113. Path Sum II
  • 原文地址:https://www.cnblogs.com/crbhf/p/14923522.html
Copyright © 2011-2022 走看看