重载(OverLoaded)和重写(OverRide)

来源:互联网 发布:淘宝达人经营 编辑:程序博客网 时间:2024/05/29 16:51

重载overloaded:

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

(overloaded function)

如果子类函数与父类函数同名,并且父类函数没有设置为虚函数,那么编译器采用的是就近原则,即使函数形参与实参不一致,也会自动转换。总之尽可能保证最近的符合的函数被调用。

重载通过静态偏联实现,即在编译阶段就确定完成。

重写override:

通过父类设置虚函数实现动态多态,解决了基类指针不能操作派生类的数据成员的问题。从而子类可以重写父类函数。

重写通过动态偏联实现,在程序运行过程中才绑定

 

基类指针不能操作派生类的数据成员的问题还可以通过

dynamic_case<派生类指针>(基类指针)->(派生类函数)。

这种转换方式去实现。

 

个人认为

重载只是一个优先级的问题,在同一域中选用最接近的函数调用。

重写是一个覆盖的概念,他才是多态实现的基础,子类函数覆盖了父类函数。

或者说父类函数只是一个接口。通过它可以访问到子类的具体方法