首页 > 编程语言 >【C++复习】同名函数判断条件(重载,隐藏,覆盖)

【C++复习】同名函数判断条件(重载,隐藏,覆盖)

时间:2023-02-13 21:33:59浏览次数:46  
标签:const 复习 int void C++ fun 重载 函数

1、重载

以下条件要全部满足:

  1. 函数名相同

以下条件满足其1:

  1. 函数形参数目不同
  2. 函数形参类型不同

注意:

  1. 不看返回值
  2. 调用形式要不同
    • //下面两个函数不能重载
      fun(int a,int b){}
      fun(int a,int b,int c=0){}
      //原因:调用fun(1,2)时,以上两个函数都符合调用条件,系统不知道该调用哪个了
  3. 类内函数可用const区分重载
    • //以下两个函数可在类内重载
      void fun(int a,int b)const{}
      void fun(int a,int b){}
      
      //类外呢?下面的函数在类外定义,会报错
      void fun(int a,int b)const{}
      //non-member function 'void fun(int, int)' cannot have cv-qualifier

2、隐藏

在类的继承中,派生类和基类含有同名函数

判断条件:

  1. 函数名相同
    • 派生类中的同名函数会隐藏基类中的同名函数及其所有的重载形式

注意:

  1. 其他的不管

3、覆盖

在类的继承中,派生类中的虚函数覆盖了基类中的虚函数

以下条件要全部满足:

  1. 函数名称相同
  2. 函数形参类型相同
  3. 函数形参数目相同
  4. const也是区分条件。两函数应均为常函数或均不为常函数。
  5. 函数返回值相同,或函数返回值满足类型兼容性规则

注意:

  1. 一般在派生类函数中也使用virtual,增强程序可读性(当然不写也行)
  2. 使用override表示重写虚函数,以便在编译阶段发现错误。(错误:两函数不满足覆盖条件,即函数参数不一致)

标签:const,复习,int,void,C++,fun,重载,函数
From: https://www.cnblogs.com/FishSmallWorld/p/17117830.html

相关文章

  • C/C++多线程实现龟兔赛跑
    题⽬:⻳兔赛跑跑道距离50⽶乌⻳(⼀个线程)每秒3⽶不睡觉;兔⼦(⼀个线程)每秒5⽶每跑15⽶睡2秒钟。请模拟⽐赛情况:#include<iostream>#include<thread>#include<......
  • [C++] thread未定义
    [C++]无法识别thread在已经包括thread头文件和使用了std命名空间的情况下编译器依旧无法使用C++11的thread类,大概率是因为使用的MinGW的线程模型为win32而非POSIX。解决......
  • C++构造和析构
    category:cpp参考书籍:C++PrimerEssentialC++编译器:gcc/g++C++构造和析构构造函数名字和类名相同没有返回值构造函数是用来构造对象,构造对象时候必定调用构造函数不......
  • ut之复习
    先简单了解一下单元测试,对软件中的最小可测试单元进行测试,一般是函数。接下来说说它的作用,(1)能够验证程序的准确性,为开发提供保障,能放心大胆的修改和重构。(2)能规范我们的设......
  • 【C++复习】运算符优先级(简)
    不同优先级的运算符混在一起,就根据优先级算相同优先级的运算符混在一起,就看它们的结合性(这里不谈)1、运算符有哪些?单目运算符*++自增,有前置和后置--自减,有前置和后置......
  • C++ 修改防火墙firewall设置(Linux、Ubuntu、CentOS)
    1、简介1.1Ubuntuhttps://ubuntu.com/download/desktopUbuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“......
  • JavaScript的原型、原型链、异步与单线程复习回顾
     原型和原型链有对象的地方就有原型,每个对象都会在其内部初始化一个属性,就是prototype(原型),原型中存储共享的属性和方法。当我们访问一个对象的属性时,js引擎会先看当......
  • Calling C++ Code From Go With SWIG
    http://zacg.github.io/blog/2013/06/06/calling-c-plus-plus-code-from-go-with-swig/ RecentlywhileworkingonaGobasedprojectIneededtousesomefunctio......
  • VScode 配置C++环境记录
    gcc/g++是c/c++编译器,Windows需要借助Mingw来使用c++的编译器,下面是安装MinGW的教程:搬运:https://blog.csdn.net/jjxcsdn/article/details/123058745在VScode中配置编译......
  • Java基础day6复习-Debug的学习
    1.Debug模式1.1什么是Debug模式是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序。1.2Debug模式操作流程如何加断点......