Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

【C++基础之十四】函参的缺省

$
0
0

可能会有这么一个函数,在大部分的情况下,我们不用给它传递参数,但在某些特殊情况下,我们需要给它传递参数,那怎么办呢?

简单啊,写两个一样的方法,一个带参,一个不带参。。。

这样也太没水准了。来点高端的。。。函数的缺省!

函数的缺省,在编译的时候,默认参数由编译器自动插入。这里主要要注意两点。


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

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


作者:jackyvincefu 发表于2013-9-25 17:32:24 原文链接
阅读:62 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>