C++函数重载与函数重写区别
函数重载(在编译时实现)
它通过改变签名i.e,改变参数的数量,改变参数的数据类型,返回类型不起任何作用,提供了函数的多种定义。
- 它可以在基类中完成,也可以在派生类中完成。
- 例子:
输出:
函数重写(在运行时实现)
它是基类函数在其派生类中的重定义,具有相同的签名i.e返回类型和形参。
- 它只能在派生类中完成。
示例:
输出:
函数重载VS函数重写:
- 继承:当一个类从另一个类继承时,会发生函数重写。重载可以在没有继承的情况下发生。
- 函数签名:重载函数的函数签名必须不同,即形参的数量或形参的类型必须不同。在重写中,函数签名必须相同。
- 函数的作用域:被覆盖函数在不同的作用域内;而重载函数在相同的作用域内。
- 函数的行为:当派生类函数必须做一些添加或不同于基类函数的工作时,就需要重写。重载用于具有相同名称的函数,这些函数的行为取决于传递给它们的参数。