zoukankan      html  css  js  c++  java
  • 【C++基础】重载,覆盖,隐藏

    函数签名的概念

      函数签名主要包括1、函数名;2、参数列表(参数的个数、数据类型和顺序);但是注意,C++官方定义中函数签名不包括返回值!!

    1、重载

    函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数,与函数返回类型无关。
    重载要求参数列表必须不同,比如参数的类型不同、参数的个数不同、参数的顺序不同。

    2、覆盖

    函数覆盖发生在继承层次之中。覆盖需要满足的条件如下:
    
    
    (1)发生覆盖的函数必须分别在父类和子类中
    
    
    (2)子类函数与父类函数的函数签名相同,返回值也相同,即函数名相同、参数列表相同、返回值相同
    
    
    (3)父类函数必须是虚函数
    
    

    3、隐藏

    
    
    隐藏是指子类中具有与父类同名的函数(不管参数列表是否相同),除去覆盖的情况。
    
    
    (1)子类的成员函数与父类的成员函数名必须相同
    
    
    (2)子类的虚函数无法覆盖父类的虚函数
    
    
    即子类成员函数与父类成员函数具有相同的函数名,除去覆盖的情况
    
    
    隐藏要求函数名一定相同,函数签名可以相同也可以不相同。也就是说,继承层次中,父类与子类同名函数要么是覆盖,要么是隐藏。
     

    1) 如果派生类的函数与基类的函数同名,但是参数不同。此时,不论基类函数有无virtual关键字,基类的函数将被隐藏。

    
    

    2) 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏。

    
    
  • 相关阅读:
    [HDU3094]A tree game
    专题总结(博弈论)
    [ZJOI2009]染色游戏
    [AtCoder3954]Painting Machines
    异或
    种树
    [PA2014]Fiolki
    简单题
    2、JUC--CAS算法
    1、JUC--volatile 关键字-内存可见性
  • 原文地址:https://www.cnblogs.com/Atanisi/p/6881694.html
Copyright © 2011-2022 走看看