主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
C++

C++ 基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

C++ 字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

C++ 函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
C++ 函数重载
C++ 函数重写

C++ 面向对象

C++ 面向对象
C++ 类和对象
C++ 多重继承
C++ 多层次继承
C++ 继承
C++ 重载
C++ 多态性
C++ 抽象
C++ 封装
C++ 接口

C++ 高级

C++ 文件和流
C++ 异常处理
C++ 动态内存
C++ 命名空间
C++ 模板
C++ 预处理器
C++ 信号量
C++ 多线程
C++ Web 编程
C++ 高级概念

基础

C++ 主页
C++ 概述
C++ 环境
C++ 基本语法
C++ 注释
C++ 数据类型
C++ Hello, World
C++ 省略命名空间
C++ 数值类型
C++ 字符类型
C++ 布尔类型
C++ 变量
C++ 作用域
C++ 多个变量
C++ 输入输出基础
C++ 常量/文字
C++ 修饰符类型
C++ 存储类别
C++ 操作符
C++ 决策结构
C++ 循环结构
C++ foreach 循环
C++ 数字
C++ 数组
C++ 指针
C++ 枚举类型
C++ 引用变量
C++ 日期与时间
C++ 结构体
C++ 联合类型

字符串

C++ 字符串
C++ 字符串长度
C++ 字符串连接

函数

C++ 函数
C++ 多参数函数
C++ 递归
C++ return 语句
C++ 函数重载
C++ 函数重写

面向对象

C++ 面向对象
C++ 类和对象
C++ 多重继承
C++ 多层次继承
C++ 继承
C++ 重载
C++ 多态性
C++ 抽象
C++ 封装
C++ 接口

高级

C++ 文件和流
C++ 异常处理
C++ 动态内存
C++ 命名空间
C++ 模板
C++ 预处理器
C++ 信号量
C++ 多线程
C++ Web 编程
C++ 高级概念

C++ 函数重载


上一章 下一章

一、C++ 中的函数重载

在 C++ 中,函数重载允许你定义多个具有相同名称但参数不同的函数。函数重载用于实现多态性,这是面向对象编程系统中的一个重要概念。

函数重载的语法

考虑以下两个具有相同名称但参数不同的函数声明:

return_type function_name(parameter1);
return_type function_name(parameter2);

函数重载示例

在下面的示例中,我们定义了三个具有相同名称但参数不同的函数。这个示例展示了函数重载的实现:

#include<iostream>
using namespace std;

// 添加两个整数(函数定义 1)
int addition(int a, int b) {
   return a + b;
}

// 添加三个整数(函数定义 2)
int addition(int a, int b, int c) {
   return a + b + c;
}

// 添加两个浮点数(函数定义 3)
float addition(float a, float b) {
   return a + b;
}

int main() {
   cout<<addition(10.5f, 20.3f)<<endl;
   cout<<addition(10, 20, 30)<<endl;
   cout<<addition(10, 20)<<endl;

   return 0;
}

输出

30.8
60
30

二、函数重载的工作原理

在具有相同名称的不同函数(函数重载)的情况下,当编译器到达特定的函数调用时,它会根据参数类型、顺序或参数数量检查不同的函数定义,并执行匹配的函数定义。

示例

假设存在三个具有不同参数的函数定义来添加数字:

// 添加两个整数(函数定义 1)
int addition(int a, int b) {
   return a + b;
}

// 添加三个整数(函数定义 2)
int addition(int a, int b, int c) {
   return a + b + c;
}

// 添加两个浮点数(函数定义 3)
float addition(float a, float b) {
   return a + b;
}

并且,你在以下顺序中调用函数:

addition(10.5f, 20.3f); // 函数调用 1
addition(10, 20, 30); // 函数调用 2
addition(10, 20); // 函数调用 3

在上述函数调用中,函数定义将按照以下顺序被调用:

  • 函数调用 1 将执行函数定义 3,因为我们传递了两个浮点值。
  • 函数调用 2 将执行函数定义 2,因为我们传递了三个整数值。
  • 函数调用 3 将执行函数定义 1,因为我们传递了两个整数值。

三、基于参数数量的函数重载

这种方法涉及定义具有相同名称但参数数量不同的多个函数。

语法

void display(int a);  // 接受一个参数
void display(int a, double b);  // 接受两个参数

示例

下面的示例展示了基于参数数量的函数重载:

#include <iostream>
using namespace std;

// 基于参数数量的函数重载
void display(int a) {
   cout << "Display with one integer: " << a << endl;
}
void display(int a, double b) {
   cout << "Display with an integer and a double: " << a << " and " << b << endl;
}
int main() {
   // 调用第一个重载
   display(10);     

   // 调用第二个重载
   display(10, 3.14); 
   return 0;
}

输出

Display with one integer: 10
Display with an integer and a double: 10 and 3.14

四、基于不同参数类型的函数重载

这种方法涉及定义具有相同名称但参数类型不同的多个函数。

语法

void show(int a);  // 参数为 int 类型
void show(double a);  // 参数为 double 类型

示例

下面的示例展示了基于不同参数类型的函数重载:

#include <iostream>
using namespace std;

// 整数输入的函数
void show(int a) {
   cout << "Integer value: " << a << std::endl;
}
// 浮点数输入的函数
void show(double a) {
   cout << "Double value: " << a << std::endl;
}
int main() {
   show(10);  
   show(3.14);      
   return 0;
}

输出

Integer value: 10
Double value: 3.14

五、基于不同参数顺序的函数重载

这种方法涉及定义具有相同名称但参数顺序不同的多个函数。

语法

// 先整数后浮点数,
// 可以是任何数据类型(bool, char 等)
void display(int a, double b) { 
   cout << "Integer and Double: " << a << ", " << b << endl;
}

// 先浮点数后整数
void display(double a, int b) {  
   cout << "Double and Integer: " << a << ", " << b << endl;
}

示例

下面的示例展示了基于不同参数顺序的函数重载:

#include <iostream>
using namespace std;

void display(int a, double b) {
   cout << "Integer and Double: " << a << ", " << b << endl;
}

void display(double a, int b) {
   cout << "Double and Integer: " << a << ", " << b << endl;
}
int main() {
   display(10, 3.14);
   display(3.14, 10);
   return 0;
}

输出

Integer and Double: 10, 3.14
Double and Integer: 3.14, 10

六、函数重载的应用场景

在 C++ 中,函数重载是一个强大的特性,允许你使用相同的函数名称根据不同的参数列表执行不同的任务。这可以导致更易读和易于维护的代码。以下是一些常见的场景和示例,在这些地方函数重载是有用的:

  • 不同数据类型 — 函数重载对于使用通用函数名处理各种数据类型是有用的。
  • 不同数量的参数 — 函数重载提供了灵活性,适用于具有不同数量参数的函数。
  • 参数类型和顺序 — 函数重载处理不同类型的参数或它们的顺序。
  • 不同操作 — 函数重载支持针对不同数据类型或上下文的类似操作。
  • 不同上下文 — 函数重载提供了功能的变化,以适应不同的要求或详细程度。
上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图