可能会有这么一个函数,在大部分的情况下,我们不用给它传递参数,但在某些特殊情况下,我们需要给它传递参数,那怎么办呢?
简单啊,写两个一样的方法,一个带参,一个不带参。。。
这样也太没水准了。来点高端的。。。函数的缺省!
函数的缺省,在编译的时候,默认参数由编译器自动插入。这里主要要注意两点。
1.缺省值只能出现在声明中,而不能出现在定义里
void foo(int a=0);//这是声明 void foo(int a)//这是定义
{
cout<<a<<endl;
} int _tmain(int argc, _TCHAR* argv[])
{
foo();//无参调用
foo(1);//带参调用
return 0;
}
2.多个参数时,参数只能由后往前缺省。
正确:
void foo(int a,int b,int c=0); void foo(int a,int b,int c)
{
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
} int _tmain(int argc, _TCHAR* argv[])
{
foo(0,1);
foo(0,1,2);
return 0;
}
错误:产生二义性,编译时出错,提示error C2548: “foo”: 缺少参数 3 的默认参数
void foo(int a,int b=0,int c); void foo(int a,int b,int c)
{
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
} int _tmain(int argc, _TCHAR* argv[])
{
foo(0,1);
foo(0,1,2);
return 0;
}
这个比较简单,就这样吧。