带默认值的函数
函数调用时,形参值是由实参数决定,形参实参必须相同。C++还提供一种
方法,为形参设置一个默认值,即形参不从实参取值。
1 函数的声明
默认值在函数声明中提供,但当有声明又有定义时,定义中不允许有默认值。
如果函数只有定义,则默认值可以出现在函数定义中。
#include <iostream>
using namespace std;
void point(int x,int y=0, int z=0)
{
cout<<"("<<x<<","<<y<<","<<z<<")"<<endl;
}
int main()
{
int x,y,z;
cout<<"X, Y,Z:"<<endl;
cin>>x>>y>>z;
point(x);
point(x,y);
point(x,y,z);
return 0;
}
2 带默认值的形参顺序规定
在函数中有多个默认参数,则形参从最右边依次向左设定。当调用函数时,只能向左匹配参数。
错误的表示:
void point(int=0,int, int=0);
void point(int=0,int=0,int);
调用时:
point(x): ok
point(x,y); ok
point(x,y,z); ok
point(); error
point(x, , z); error
3 默认参数与函数重载
使用带默认值的函数可以将一些简单的函数合并为一个函数。但是如果一个函数不能既作为重载函数,
又作为带默认值的函数。会出现二义性,系统无法执行。
例:point(int x,int y);
point(int x,int y=0, int z=0);
point(x,y);
4 默认值的限定
默认值:可以是全局变量,全局常量,也可以作为一个函数表达式。默认值不能是局部变量。
函数调用时,形参值是由实参数决定,形参实参必须相同。C++还提供一种
方法,为形参设置一个默认值,即形参不从实参取值。
1 函数的声明
默认值在函数声明中提供,但当有声明又有定义时,定义中不允许有默认值。
如果函数只有定义,则默认值可以出现在函数定义中。
#include <iostream>
using namespace std;
void point(int x,int y=0, int z=0)
{
cout<<"("<<x<<","<<y<<","<<z<<")"<<endl;
}
int main()
{
int x,y,z;
cout<<"X, Y,Z:"<<endl;
cin>>x>>y>>z;
point(x);
point(x,y);
point(x,y,z);
return 0;
}
2 带默认值的形参顺序规定
在函数中有多个默认参数,则形参从最右边依次向左设定。当调用函数时,只能向左匹配参数。
错误的表示:
void point(int=0,int, int=0);
void point(int=0,int=0,int);
调用时:
point(x): ok
point(x,y); ok
point(x,y,z); ok
point(); error
point(x, , z); error
3 默认参数与函数重载
使用带默认值的函数可以将一些简单的函数合并为一个函数。但是如果一个函数不能既作为重载函数,
又作为带默认值的函数。会出现二义性,系统无法执行。
例:point(int x,int y);
point(int x,int y=0, int z=0);
point(x,y);
4 默认值的限定
默认值:可以是全局变量,全局常量,也可以作为一个函数表达式。默认值不能是局部变量。