C++中类的成员函数重写(覆盖),重载和隐藏概念常容易混淆,如下以表格形式做一个简单梳理:
| 作用域 | 函数名 | 参数列表 | 是否虚函数 | 注意点 |
重载 | 相同,函数都是同一类成员函数 | 相同 | 不同(类型,个数) | 不关心 | 1.不同通过返回值类型不同实现重载; 2.参数顺序不同不能实现重载; |
重写(覆盖) | 不同,通常派生类重写基类成员函数 | 相同 | 相同 | 基类必须是虚函数 | 1.重写与被重写函数返回值也要一致; 2.被重写函数不能是私有的; 3. 静态函数不能重写; |
隐藏 | 不同,通常派生类隐藏基类成员函数 | 相同 | 不关心 | 不关心 | 通常要注意避免隐藏 |