网站首页 > 文章精选 正文
函数的重载
用C语言编程时,有时会发现几个不同名的函数实现的是同一类的操作,例如,要求从3个数中找出其中最大值,而这3个数的类型事先不确定,可能是 int, float或double类型,在写C程序的时候,需要分别设计出3个函数,其原型如下:
int max1(int a, int b, int c) //求 3 个int 类型变量中的最大值
float max2(float a, float b, float c) //求 3 个float 类型变量中的最大值
double max3(double a, double b, double c) //求3 个double 类型变量中的最大值
C语言规定在同一作用域(例如,同一个文件模块)中不能有同名的函数,因此,3个函数的名字不相同。我们来编写一个测试例子,新建test.c文件,使用gcc进行编译。程序测试代码如下:
此时,提示第3行和第10行定义my_max()函数重定义。那么,说明,C语言不支持同名函数的定义。不可以通过参数类型来区分同名函数的定义。
C++允许在同一作用域中用同一函数名定义多个函数,这些函数的参数个数和参数类型都不相同,这些同名的函数可用来实现不同的功能,这就是函数的重载,即一个函数名多用。
如下是一些例子:
int max(int a, int b, int c) //求 3 个int 类型变量中的最大值
float max(float a, float b, float c) //求 3 个float 类型变量中的最大值
double max(double a, double b, double c) //求 3 个double 类型变量中的最大值
int max(int a, int b) //求2 个int 型中最大值
可以看到,函数名都相同。
那么,我们新建一个test.cpp文件,使用g++来编译该C++程序。测试代码如下:
可以看到,C++语言支持同名函数的定义,可以通过函数的参数类型,区分不同函数的定义,这就是函数的重载。后面学习类的成员函数定义时,会再深入学习类的运算符重载。
注意:重载的函数的参数个数或类型必须至少有其中之一不同,函数返回值类型可以相同,也可以不同。但不允许参数个数和类型都相同,而只有返回值类型不同,因为,系统无法从函数的调用形式上判断哪一个函数与之匹配。
- 上一篇: 三个数的最大乘积(三个数相乘最大值)
- 下一篇: 基础函数20例,案例解读,再不掌握就真的Out了
猜你喜欢
- 2025-05-10 Java手写一个bitmap(java手写代码)
- 2025-05-10 MySQL有哪些实现方式?何为插入,何为更新?
- 2025-05-10 自学 C++ 第 6 课 二维数组找最值
- 2025-05-10 斐波那契查找算法(斐波那契查找算法java)
- 2025-05-10 YARN 资源调度器 CapacityScheduler 原理
- 2025-05-10 8张图带你全面了解kafka的核心机制
- 2025-05-10 java数据类型的转换以及精度丢失(java中基本数据类型转换)
- 2025-05-10 C语言中用宏实现求两个数中的最大数
- 2025-05-10 异或的魅力!图解「数组中两个数的最大异或值」
- 2025-05-10 基础函数20例,案例解读,再不掌握就真的Out了
- 05-14TS,TypeScript,Windows环境下构建环境,安装、编译且运行
- 05-14TypeScript 也能开发AI应用了!
- 05-14搞懂 TypeScript 装饰器
- 05-14前端小哥哥:如何使用typescript开发实战项目?
- 05-14在 React 项目中,一般怎么处理错误?
- 05-14react19 常用状态管理
- 05-14Vue3开发极简入门(2):TypeScript定义对象类型
- 05-14C#与TypeScript语法深度对比
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)