https://www.cnblogs.com/lsgxeva/p/7684545.html
https://blog.csdn.net/K346K346/article/details/49386747
首先抛一些结论:
重载
- 发生在同一作用域
- 具有相同的函数名及不同的参数列表
- 对返回值不做要求,可相等可不等
重写(覆盖)
- 发生在基类与派生类之间,在不同作用域
- 具有相同的函数名、参数列表、返回类型(关于返回类型存在一种特殊情况,即返回类型可以不用完全一致,协变返回类型(covariant return type)也可以构成虚函数重写。)
隐藏
- 发生在不同作用域
- 可以是派生类成员函数隐藏基类成员函数,也可以是类成员函数隐藏全局外部函数
- 重写是隐藏的一种特例
- 被隐藏的函数没有消失,仍然可以通过指定作用域访问它们
代码
#include <iostream>
using namespace std;
void func(const char* s)
{
cout << "global function with name:" << s << endl;
}
class A
{
void func()
{
cout << "member function of A" << endl;
}
public:
void useFunc()
{