赞
踩
函数在定义时可以预先声明默认的行参数。调用时如果给实参,则采用实参初始化形参,,如果没给实参,则采用预先声明的默认形参值。
注意:有默认的形参必须在形参列表的最后。即有默认值的形参右面,不能出现无默认值的形参。因为在函数调用中,实参与形参是按从左向右的顺序建立对应关系的。
例如:int add(int x=1,int y=2,int z=3);√
int add(int x=1,int y ,int z=3);×
int add(int x=1,int y ,int z=3); ×
默认形参值应该在函数原型中给出,例如:
在相同的作用域内,不允许在同一个函数的多个声明中对同一个参数的默认值重复定义。即使前后定义的值相同也不行。这里作用域是指直接包含着函数原型说明的大括号所界定的范围, 注意,函数的定义也属于声明,这样,如果一个函数在定义之前又有原型声明,默认形参值需要在原型声明中给出,定义中不能再出现默认形参值。
重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。
两个重载函数必须在下列一个或两个方面有所区别:
1、函数的参数个数不同。
2、函数的参数类型不同
3、参数类型顺序不同,
当将要定义一组函数,使它们执行一系列的操作,但是它们是应用在不同的参数类型上的。此时我们可以选择重载函数。
例如: int max (int,int); //返回整数的最大值;
double max (double,double); //返回两个小数的最大值;
- #include <iostream>
- using namespace std;
- //类型不同 C语言没有函数重载
- int Max(int a, int b)
- {
- return a > b ? a : b;
- }
- float Max(float a, float b)
- {
- return a > b ? a : b;
- }
- //顺序不同
- // error C2084: 函数“int Max(int,int)”已有主体
- //int Max(int b, int a)
- //{
- //
- //}
- void print(int a, char c)
- {
-
- }
- void print(char a, int c)
- {
-
- }
- //数目不同
- void print(int a, int b, int c)
- {
-
- }
-
- int main()
- {
- printf("%d\n", Max(1, 2));
- printf("%.1f\n", Max(1.1f, 2.2f)); //错误,C++对于类型要求比C语言严格
- 1L; //long
- 1.1f; //float
- 1u; //unsiged;
- //默认的小数是double;
- return 0;
- }
思考一下:
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。