[C++]重载、覆盖与隐藏[摘自《高质量C/C++编程指南》]
对比C函数,C++增加了重载(overloaded)、内联(inline)、const和virtual四种新机制。其中重载和内联机制既可用于全局函数又可用于类的成员函数,const与virtual机制仅用于类的成员函数。
1. 重载
成员函数被重载的特征
1.1 相同的范围(同一个类中);
1.2 函数名字相同;
1.3 参数不同;
1.4 virtual关键字可有可无
2. 覆盖
覆盖是指派生类函数覆盖基类函数,特征是:
2.1 不同的范围(分别位于派生类与基类);
2.2 函数名字相同;
2.3 参数相同;
2.4 基类函数必须有virtual关键字;
3. 隐藏
隐藏是指派生类的函数屏蔽了与其同名的基类函数,特征是:
3.1 如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆);
3.2 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。

浙公网安备 33010602011771号