重写(override) 重载(overload) 重定义(overwrite)

265 阅读1分钟

Overload重载:

功能相近的几个函数用相同的名字表示,但参数不同(包括类型、顺序不同),即函数重载。

  1. 相同范围(在同一个类中)
  2. 函数名字相同
  3. 参数不同
  4. virtual关键字可有可无。 注意重载解析不考虑返回类型 ------函数名相同,参数不同且在相同范围--重载

Override覆盖--重写 :

是指派生函数覆盖基类函数,是C++多态的表现。

  1. 不同的范围(分别位于派生类与基类)
  2. 函数的名字相同
  3. 参数相同
  4. 返回值相同
  5. 基类函数必须有virtual关键字
  6. .含有纯虚函数的类称为抽象类,不可被实例化。 ----------派生类函数与基类函数完全相同且基类函数有virtual关键字,允许被派生类覆盖

Overwrite--重定义

  1. 位于不同的范围(分别位于派生类与基类)
  2. 函数名字相同
  3. 返回值可以不同
  4. 参数不同,不论有无virtual关键字,基类的函数被隐藏
  5. 参数相同,但是基函数没有virtual关键字,基类函数被隐藏
  6. 当派生类对基类函数进行了override/overwite ,则派生类使用自己重新override/overwite的函数,否则它使用基类的函数
  7. 重写发生在基类和派生类之间,当函数的名称相同但参数不同,无论是否有virtual 均发生重写,或者函数的名称与参数完全相同但没有写virtual关键字也发生重写。基类的函数方法被隐藏。但可以使用限定符::引用。