重载overloaded:
出现在相同作用域中的两个函数,如果具有相同的名字而形参不同,则称为重载函数
(overloaded function)
如果子类函数与父类函数同名,并且父类函数没有设置为虚函数,那么编译器采用的是就近原则,即使函数形参与实参不一致,也会自动转换。总之尽可能保证最近的符合的函数被调用。
重载通过静态偏联实现,即在编译阶段就确定完成。
重写override:
通过父类设置虚函数实现动态多态,解决了基类指针不能操作派生类的数据成员的问题。从而子类可以重写父类函数。
重写通过动态偏联实现,在程序运行过程中才绑定
基类指针不能操作派生类的数据成员的问题还可以通过
dynamic_case<派生类指针>(基类指针)->(派生类函数)。
这种转换方式去实现。
个人认为
重载只是一个优先级的问题,在同一域中选用最接近的函数调用。
重写是一个覆盖的概念,他才是多态实现的基础,子类函数覆盖了父类函数。
或者说父类函数只是一个接口。通过它可以访问到子类的具体方法