在C++中,经常会遇到函数的重载、重写和隐藏。这三种情况在面试中经常会被问到,因此,我们对这三种情况作出区分。
重载
重载通常发生在相同范围内,如同一个类中。重载有以下特点:- 相同范围
- 函数名相同
- 参数列表不同
- 返回类型相同
- virtual关键字可有可无
重写
重写通常发生在派生类和基类之间。重写的特点如下:- 不同的范围
- 函数名相同
- 参数列表相同
- 返回类型相同
- 基类函数必须有virtual关键字
隐藏
是指派生类的函数屏蔽了与其同名的基类函数- 派生类的函数与基类函数同名,但是参数列表不同,则无论基类函数是否有virtual,都将被隐藏
- 派生类的函数与基类函数同名,且参数列表相同,则对于无virtual关键字修饰的基类同名函数,将被隐藏