在网上看到了很多讲这三个区别的博客,我也总结了(搬运)要点如下:
一:重载
- 相同的范围(在同一个类中)
- 函数名字相同
- 参数不同
- virtual 关键字可有可无
二:覆盖(派生类函数覆盖基类函数)
- 不同的范围(分别位于派生类与基类)
- 函数名字相同
- 参数相同
- 基类函数必须有 virtual 关键字
三:隐藏(派生类的函数屏蔽了与其同名的基类函数)
如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)
参考博文链接如下:http://blog.youkuaiyun.com/daniel_h1986/article/details/5360344
还有一篇更深讲解的好博文连接如下:http://blog.youkuaiyun.com/ring0hx/article/details/1605254