【C++基础之十四】函参的缺省
可能会有这么一个函数,在大部分的情况下,我们不用给它传递参数,但在某些特殊情况下,我们需要给它传递参数,那怎么办呢?
简单啊,写两个一样的方法,一个带参,一个不带参。。。
这样也太没水准了。来点高端的。。。函数的缺省!
函数的缺省,在编译的时候,默认参数由编译器自动插入。这里主要要注意两点。
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; }
这个比较简单,就这样吧。