C++笔记之重载和重写辨别
code review!
文章目录
- C++笔记之重载和重写辨别
- 重载(overloading)
- 重写(Overriding)
在C++中,重载(overloading)和重写(overriding)是面向对象编程中的两个重要概念,它们用于不同的目的和场景。
重载(overloading)
重载(Overloading)是指在同一个作用域内,通过改变函数的参数列表来定义具有相同名称但不同参数的多个函数。重载函数可以具有相同的名称,但是参数类型、参数个数或参数顺序必须不同。重载函数的选择是在编译时进行的,根据调用时提供的参数类型来选择合适的函数。
下面是一个重载函数的例子:
在上面的例子中,print
函数被重载了两次,一次接受整数参数,另一次接受浮点数参数。根据传递的参数类型,编译器会选择合适的重载函数进行调用。
重写(Overriding)
重写(Overriding)是指在派生类中重新定义基类中已有的虚函数。派生类可以通过重写基类的虚函数来提供自己的实现,从而覆盖基类中的实现。重写函数必须具有与基类函数相同的函数签名(包括函数名、参数列表和返回类型)。
下面是一个重写函数的例子:
在上面的例子中,Shape
类中的 draw
函数被声明为虚函数,并在派生类 Circle
中进行了重写。在 main
函数中,创建了一个指向 Circle
对象的 Shape
指针,并调用了 draw
函数。由于 draw
函数是虚函数,并且指针类型是 Shape*
,所以会调用派生类 Circle
中的重写函数。
总结:
- 重载是指在同一个作用域内,通过改变函数的参数列表来定义具有相同名称但不同参数的多个函数。重载函数的选择是在编译时进行的,根据调用时提供的参数类型来选择合适的函数。
- 重写是指在派生类中重新定义基类中已有的虚函数。派生类通过重写虚函数来提供自己的实现,从而覆盖基类中的实现。重写函数必须具有与基类函数相同的函数签名。重写的选择是在运行时进行的,根据对象的实际类型来选择合适的函数。