成员函数的重载,覆盖(多态)和隐藏
重载
函数名相同,函数的参数列表不同(包括参数个数和参数类型),至于返回类型可同可不同:
1、具有相同的作用域,即在同一个类声明中
2、返回值相同,函数的参数不同
3、同名const方法和非const方法之间的重载不受到2的约束,同类重载受到2的约束
4、不需要virutal 关键字。
覆盖(多态)override
派生类重新实现或者改写了基类的成员函数:
1、不同的作用域(分别位于派生类和基类中)。
2、函数名称相同。
3、函数的参数也完全相同。
4、基类必须有virtual关键字,子类则可有可无。
5、若虚函数存在重载的情况,遵循基类而不遵循子类。
6、构造函数中虚函数无效,总是调用本类型方法不会调用覆盖方法。
隐藏
派生类的函数屏蔽了与其同名的基类函数
1、不同的作用域(分别位于派生类和基类)。
2、函数名称相同。
3、函数的参数也完全相同。
4、不需要virtual关键字。
5、总是调用引用类型对应的方法。
网友评论