C++笔记之重载和重写辨别

2023-12-13 20:08:27

C++笔记之重载和重写辨别

code review!


在C++中,重载(overloading)和重写(overriding)是面向对象编程中的两个重要概念,它们用于不同的目的和场景。

重载(overloading)

重载(Overloading)是指在同一个作用域内,通过改变函数的参数列表来定义具有相同名称但不同参数的多个函数。重载函数可以具有相同的名称,但是参数类型、参数个数或参数顺序必须不同。重载函数的选择是在编译时进行的,根据调用时提供的参数类型来选择合适的函数。

下面是一个重载函数的例子:
在这里插入图片描述

在上面的例子中,print 函数被重载了两次,一次接受整数参数,另一次接受浮点数参数。根据传递的参数类型,编译器会选择合适的重载函数进行调用。

重写(Overriding)

重写(Overriding)是指在派生类中重新定义基类中已有的虚函数。派生类可以通过重写基类的虚函数来提供自己的实现,从而覆盖基类中的实现。重写函数必须具有与基类函数相同的函数签名(包括函数名、参数列表和返回类型)。

下面是一个重写函数的例子:
在这里插入图片描述

在上面的例子中,Shape 类中的 draw 函数被声明为虚函数,并在派生类 Circle 中进行了重写。在 main 函数中,创建了一个指向 Circle 对象的 Shape 指针,并调用了 draw 函数。由于 draw 函数是虚函数,并且指针类型是 Shape*,所以会调用派生类 Circle 中的重写函数。

总结:

  • 重载是指在同一个作用域内,通过改变函数的参数列表来定义具有相同名称但不同参数的多个函数。重载函数的选择是在编译时进行的,根据调用时提供的参数类型来选择合适的函数。
  • 重写是指在派生类中重新定义基类中已有的虚函数。派生类通过重写虚函数来提供自己的实现,从而覆盖基类中的实现。重写函数必须具有与基类函数相同的函数签名。重写的选择是在运行时进行的,根据对象的实际类型来选择合适的函数。

文章来源:https://blog.csdn.net/weixin_43297891/article/details/134910808
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。