【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;
}

 

 

这个比较简单,就这样吧。


 

posted on 2013-09-25 20:00  you Richer  阅读(257)  评论(0编辑  收藏  举报