重载,重写,覆盖的区别

/ 0评 / 0

重载-overload:
(1)、在同一作用域下
(2)、函数名相同,函数参数不同
(3)、virtual可有可无

重写-overwrite:
(1)、派生类与基类作用域
(2)、函数名相同,函数参数相同
(3)、virtual可有可无
注:从派生类角度看,重写是派生类同名函数重写基类同名函数,派生类调用时,由内层向外层进行函数查找,如果在内层找到函数,直接调用,否则查找基类的同名函数进行调用(在调用权限范围内)。从子类向父类的角度来看。

覆盖-override:
(1)、派生类与基类作用域
(2)、函数名相同,函数参数相同
(3)、virtual必须有
注:从基类角度看,派生类覆盖了基类的同名函数,在父类指针子类对象的情况下,调用子类的相关函数。从父类向子类的角度来看。
参考C++11的override关键字,说明派生类中的虚函数。void func() override;