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