C++ 重载、重写、隐藏
重载 overload
定义:函数名相同,函数的参数个数、参数类型或参数顺序三者中必须至少有一种不同。调用时,编译器能够判断在哪种情况下调用哪种方法。
阶段:编译时。
目的:把函数本身作为一个概念抽象出来,基于不同形参给出不同实现以实现多态,实现静多态的一种技术。
重写/覆盖 override
定义:子类重写从基类继承过来的函数,函数名、返回值、参数列表都必须和基类相同。
一般发生在子类和父类继承关系之间。子类重新定义父类中有相同名称和参数的虚函数。
阶段:运行时。编译器判断可以优化时,会提前到编译时,以提高性能。
目的:实现运行时多态机制。
关键字override。确保派生类函数被改写,且符合规则,防止意外重写。
关键字final。应用于虚函数,阻止它在派生类中被改写。应用于类,该类不能被继承。
隐藏hide、重定义redefining
隐藏和重定义是一个意思。
定义:派生类会隐藏基类的同名函数,无论返回值和参数列表是否相同。
阶段:编译时
目的:为了避免“非恶意性的错误”,向前兼容。避免派生类新增的接口对基类的影响。

浙公网安备 33010602011771号