函数重载(overload)
- 同名
- 不同参(形参类型不同、形参个数不同、形参顺序不同)
- 同作用域
- 返回值可以不同
函数重写(也称为函数覆盖 override)
函数重写是指子类重新定义基类的虚函数。
- 函数同名同参;
- 不在同一个作用域(分别位于派生类与基类);
- 基类函数必须有 virtual 关键字,不能有 static 。
- 返回值相同,否则报错;
- 重写函数的访问修饰符可以不同;
函数重定义(也称隐藏overhide)
- 函数名字相同;
- 不在同一个作用域(分别位于派生类与基类) ;
- 返回值可以不同;
- 参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载以及覆盖混淆);
- 参数相同,但是基类函数没有 virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆);