函数签名的概念

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

1、重载

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

2、覆盖

函数覆盖发生在继承层次之中。覆盖需要满足的条件如下:

(1)发生覆盖的函数必须分别在父类和子类中

(2)子类函数与父类函数的函数签名相同,返回值也相同,即函数名相同、参数列表相同、返回值相同

(3)父类函数必须是虚函数

3、隐藏


隐藏是指子类中具有与父类同名的函数(不管参数列表是否相同),除去覆盖的情况。

(1)子类的成员函数与父类的成员函数名必须相同

(2)子类的虚函数无法覆盖父类的虚函数

即子类成员函数与父类成员函数具有相同的函数名,除去覆盖的情况

隐藏要求函数名一定相同,函数签名可以相同也可以不相同。也就是说,继承层次中,父类与子类同名函数要么是覆盖,要么是隐藏。
 

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


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


最新文章

  1. jquery easyui tree动态加载子节点
  2. Andriod SDK Manager 安装问题解决方法
  3. 基于Token的WEB后台认证机制
  4. c#检测端口是否被占用
  5. 现在有T1、T2、T3三个线程,怎样保证T2在T1执行完后执行,T3在T2执行完后执行?使用Join
  6. YII2配置多语言
  7. javascript 继承机制设计思想
  8. 一个非常不错的gridview 风格
  9. 写自己的一个pdo数据库操作框架
  10. C++ 默认参数(转载)
  11. css中的宽高以及百分比参照
  12. asp.net WebService如何去掉asmx后缀
  13. 【repost】Python正则表达式
  14. 关于 vscode 格式化自己的代码 使用shift+alt+f
  15. iOS 中的block异常 判断block是否为空
  16. jqeury点击空白关闭弹窗
  17. C++中的显式类型转换
  18. 廖雪峰Java3异常处理-1错误处理-3抛出异常
  19. Java并发编程-ReentrantLock源码分析
  20. 01-移动端开发教程-CSS3新特性

热门文章

  1. 宜人贷PaaS数据服务平台Genie:技术架构及功能
  2. sealed,new,virtual,abstract与override关键字的区别?
  3. Java知识点梳理——泛型
  4. mongodb 配置单实例与双实例
  5. Notepad++ QuickText 插件的 HTML 配置: \Notepad++\plugins\Config\QuickText.ini
  6. 远程服务器上的weblogic项目管理(五) PermGen内存溢出问题
  7. Mac下php版本不支持imagetfftext函数问题
  8. angularJs-HelloWorld
  9. Android 修改Menu字体颜色和背景
  10. HDU - 1260 Tickets 【DP】