c++第一节之函数重载与缺省参数
来源:互联网 发布:知乎 冯大辉 离职 编辑:程序博客网 时间:2024/04/26 17:10
在C语言编程中,一般情况下一种函数对应一种功能,有时候 我们想实现一种功能,只是其中有一些细节不同却需要不同的函数来实现
例如实现两个数的加减运算 C语言编辑下
int Add_1 ( int a,int b);double Add_2 ( double a,double b);long Add_3 ( long a. long b);
如果这些细节较多,实现同一功能定义太多的函数名,会是编辑很不方便
在这种情况下就出现了函数重载概念
函数重载定义: 在c++中,允许同一函数名定义多个函数,这些函数的参数和个数可以不同,但必须实现相同或者相近的功能。
例如实现两个数的加减运算 C++编辑下
int Add ( int a,int b);double Add ( double a,double b);long Add ( long a, long b);
我们看到一个函数名在c++中定义了三次,那编译器在编译器时怎么选择函数呢?系统会根据给出的实参的类型去调用参数类型相同的函数进行匹配。
—————其实重载函数在参数的个数上也可以不同
int Add ( int a,int b,int c);double Add ( double a,double b);
函数在编辑时通过传参个数和类型也可以匹配到声明的函数
int Add (int);double Add(int);void Add (int);//参数个数和类型都相同,函数在调用时不知道调用哪一个而出现错误
因此重载函数的参数个数,参数类型,参数顺序必须至少一者不同,返回值可相同也可不相同
void fun (int a,int b);void fun (double a,double b);void fun (char a, char b);void fun (int a,double b);void fun (double b,int a);//都可形成重载 其中如果传参为(int a, char b)当没有这种类型的接收函数时,编译器会把char类型转化为int类型或者int类型转换为char类型再找到与之匹配的函数进行调用
函数重载注意事项:
函数必须实现相同或相似的功能
函数必须定义在全局域中
函数参数个数,参数类型,参数顺序必须至少一者不同
缺省参数
c++允许在函数定义时预先给定默认的形参值
当在函数调用时,如果已给出形参 值,就会按形参值进行调用函数,若没有给出形参值,则会已定义时的默认形参值进行调用函数。
void fun (int a=10) void fun (int a=10){} {}int main() int main(){ int min = 3; { int min; fun (min) fun (min) return 0; return 0; } }//调用左边时a会以3进行计算。调用右边时,a会以10进行计算
void fun(double x1, double x2, double x3, double x4=10);//参数赋初值只能从右往左依次进行void fun(double x1, double x2=10, double x3, double x4);void fun(double x1, double x2=10, double x3, double x4=10);//这两个都不正确
传参个数与函数参数不相同时:
void get_max(int a,int b,int c,int d=7);get_max(2,4,6) //此最后结果为 a=2,b=4,c=6,d=7;实参与形参的结合是从左到右的
0 0
- c++第一节之函数重载与缺省参数
- 函数重载与缺省参数
- C++初识之函数重载、缺省参数
- 函数重载和缺省参数
- 简单介绍函数参数缺省与函数重载
- 函数的缺省参数与函数的重载
- C++【函数(重载/缺省参数/哑元/内联)】
- 第5章 函数重载与缺省参数
- C++函数重载与缺省参数的宏观理解
- C++缺省参数和函数重载
- 【从C到C++学习笔记】内联成员函数/成员函数重载及缺省参数
- C++语言笔记系列之六——函数的重载、函数缺省参数
- 内联,重载,缺省参数
- C++的缺省参数与函数重载是正交特性吗?
- C++的缺省参数与函数重载是正交特性吗?
- 《C++编程思想》第五章 函数重载与缺省参数 (原书代码+习题+解答)
- 一、C++ 内联函数、重载函数、函数的缺省参数
- C++编程思想读书笔记之 第五章 函数重载及缺省参数
- 【Spring源码】AOP部分源码解读
- 【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- array的初始化
- 求下一个更大的数
- Servlet请求路径相关方法汇总
- c++第一节之函数重载与缺省参数
- CV 2017-02-21
- 快速学sass(四)---变量
- jzoj 3631 【汕头市选2014】三角(triangle)
- 【HNOI2008】bzoj1009 GT考试
- 深入浅出DNS系列(七)- BIND
- vuejs最简单入门
- 【J2EE】JSP
- File类和时间类的两道综合练习