C++系列——重载(overload),重写(override),重定义(redefine)

1. 重载(overload)

定义:出现在相同作用域中的两个函数,如果具有相同的名字而形参不同,则称为重载函数。

返回值可以不同

应用场景:为了方便程序员编程,消除因参数不同而带来的命名上的冗余与复杂。


2. 重写(override,一般也叫做覆盖)

定义:出现在基类和派生类中,派生类重定义了基类中的virtual函数。

返回值要相同,或者是协变

应用场景:实现多态,完成运行时的动态函数调用:用不变的代码,完成动态的算法。模板,泛型技术,都是利用了这一特性。


3. 重定义(redefine,一般也叫做隐藏,hide)

定义:出现在基类和派生类中,派生类重定义了基类中的函数。分为两种情况,1)如果基类中的函数是virtual函数,则参数不同,才叫重定义,不然就是重写了;2)如果基类中的函数不是virtual函数,则参数相同才能被重定义,否则,基类和派生类中都存在该函数。

应用场景:重定义和上面两种情况的区别可以基本不用理会,因为其实很好分清。重定义了得函数,对于基类类型的指针是不可见的,所以如果要用该指针来进行调用,是会报错的。这个主要是为了区别基类和派生类之间的区别。

你可能感兴趣的:(c++,c++,多态,泛型,编程)