下文是在知乎上看的一篇短文,较清楚的区分了这三个概念。原文连接一张图讲明白重载、覆盖和隐藏的联系与区别! - 知乎
学到类的继承这边会出现三个容易混淆的概念:重载(overload)、覆盖(override)和隐藏(hide)。
- 重载:同一作用域内的几个函数名字相同但参数列表不同(见C++ Primer 6.4节)。
- 覆盖:派生类对基类中有相同函数签名(指参数列表+返回类型)的函数进行重定义(来自GeeksforGeeks,见C++ Primer 15.2-3节)。
- 隐藏:内作用域的函数会使外作用域的函数变得不可见。
如何厘清这三者之间的关系?给定两个函数,如何判断他们是重载/覆盖/隐藏?看下面这张图就够了。