zoukankan      html  css  js  c++  java
  • C++函数重载、覆盖与隐藏的区别

    一.成员函数的重载,其特点:


    (1)在同一个类中;
    (2)函数名字相同;
    (3)参数不同;
    (4)virtual 关键字可有可无。

     
    二.覆盖是指派生类函数覆盖基类函数,其特点:

    (1)位于派生类与基类中;
    (2)函数名字相同;
    (3)参数相同;
    (4)基类函数必须有virtual 关键字

    扩展理解

    1.加virtual关键字的函数是虚函数,它是在基类中定义的,它的引入是因为不确定其派生类的具体行为,函数的覆盖虚函数多态性联系在一起,与父类子类有关

    2.虚函数体现了C++中的多态性

    C++的多态性:在基类的函数前加上virtual关键字,在派生类中重写该函数,在编译的时候,利用迟绑定技术, 也就是编译时并不确定调用哪个函数,运行时就会根据对象的实际类型来确定调用相应的函数。

    3.覆盖函数都是虚函数, 反之不然,有可能是隐藏,即当派生类的函数与基类函数同名不同参数,且基类函数是虚函数时不是覆盖函数。


    三.隐藏是指派生类的函数屏蔽了与其同名的基类函数,有两种情况:
    (1)如果派生类的函数与基类的函数同名参数不同。此时基类的函数将被隐藏(注意别与重载混淆,重载发生在同一个类中);
    (2)如果派生类的函数与基类的函数同名同参数,但基类函数没有virtual 关键字。此时基类的函数被隐藏(注意别与覆盖混淆,覆盖要求基类函数必须有virtual关键字)。

  • 相关阅读:
    spring boot基础知识
    使用PrintDocument定制打印格式
    vue刷新页面出现闪烁
    递归限制级数
    导出Excel的2个方法
    通过反射获取对象名称和值
    asp.net mvc 使用bootstrap的模态框插件modal
    记录用到的mssql的几个方法
    记录几个字符串转html的帮助类,以防忘记
    git 命令
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3123035.html
Copyright © 2011-2022 走看看