函数重载和重写

重载overload:是函数名相同,参数列表不同 重载只是在类的内部存在。但是不能靠返回类型来判断。

函数重载发生在同一作用域内,即在同一个类里有多个同名函数,参数列表不同。

重写override:也叫做覆盖。子类重新定义父类中有相同名称和参数的虚函数。函数特征相同。但是具体实现不同,主要是在继承关系中出现的 。即发生在父类子类中,子类重写父类的同名函数。

重写需要注意:

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

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

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

重定义(redefining,隐藏)

  • 定义

    • 重定义也称为隐藏,派生类对基类成员函数重新定义,即派生类定义了某个函数,该函数与基类中函数同名
  • 注意点

    • 重定义也只能出现在基类和派生类之间,当

      • [1] 基类和派生类之间存在同名函数
      • [2] 无论返回类型、形参个数和类型是否相同
    • 则基类中的同名函数都会被隐藏+

      • 如果基类中该函数被重载,则重载函数都会被隐藏,包括虚函数
    • 如果返回类型、形参个数和类型均相同,且基类中为virtual函数,则属于重写重写

    • 如果要访问基类的该函数,需要在函数名前加上作用域操作符

猜你喜欢

转载自blog.csdn.net/qq_41916395/article/details/82631166
今日推荐