C++重载、重写、重定义

2022-07-13 10:55:29

重载(overload):是函数名相同,参数列表不同,override只是在类的内部存在。

重写(override),也叫覆盖。子类重新定义父类中有相同名称和参数的虚函数(virtual)。在继承关系之间。C++利用虚函数实现多态。

重写的特点:

          1 被重写的函数不能是static的。必须是virtual的

          2 重写函数必须有相同的类型,名称和参数列表

          3 重写函数的访问修饰符可以不同。尽管父类的virtual方法是private的,派生类中重写改写为public,protected也是可以的。

          这是因为被virtual修饰的成员函数,无论他们是private/protect/public的,都会被统一放置到虚函数表中。对父类进行派生时,子类会继承到拥有相同偏移地址的虚函数标(相同偏移地址指的是各虚函数先谷底与VPTR指针的偏移),

           因此就允许子类对这些虚函数进行重写

重定义(redefining),也叫隐藏。子类重新定义父类有相同名称的非虚函数(参数列表可以不同)

  • 作者:行者如风gp
  • 原文链接:https://blog.csdn.net/gp18391818575/article/details/110875871
    更新时间:2022-07-13 10:55:29