默认参数是函数声明中提供的值, 如果函数的调用者未提供具有默认值的参数值, 则该值由编译器自动分配。
以下是一个简单的C ++示例, 以演示默认参数的用法。我们不必编写3个求和函数, 只需将第3个和第4个参数使用默认值即可使用一个函数。
#include<
iostream>
using namespace std;
// A function with default arguments, it can be called with
// 2 arguments or 3 arguments or 4 arguments.
int sum( int x, int y, int z=0, int w=0)
{
return (x + y + z + w);
}/* Driver program to test above function*/
int main()
{
cout <
<
sum(10, 15) <
<
endl;
cout <
<
sum(10, 15, 25) <
<
endl;
cout <
<
sum(10, 15, 25, 30) <
<
endl;
return 0;
}
输出如下:
255080
当函数重载与默认值一起完成时。然后, 我们需要确保它不会模棱两可。
如果模棱两可, 编译器将抛出错误。以下是上述程序的修改版本。
#include<
iostream>
using namespace std;
// A function with default arguments, it can be called with
// 2 arguments or 3 arguments or 4 arguments.
int sum( int x, int y, int z=0, int w=0)
{
return (x + y + z + w);
}
int sum( int x, int y, float z=0, float w=0)
{
return (x + y + z + w);
}
/* Driver program to test above function*/
int main()
{
cout <
<
sum(10, 15) <
<
endl;
cout <
<
sum(10, 15, 25) <
<
endl;
cout <
<
sum(10, 15, 25, 30) <
<
endl;
return 0;
}
错误:
prog.cpp: In function 'int main()':prog.cpp:17:20: error: call of overloaded 'sum(int, int)' is ambiguouscout <
<
sum(10, 15) <
<
endl;
^prog.cpp:6:5: note: candidate: int sum(int, int, int, int) int sum(int x, int y, int z=0, int w=0) ^prog.cpp:10:5: note: candidate: int sum(int, int, float, float) int sum(int x, int y, float z=0, float w=0) ^
关键点:
- 默认参数与常量参数不同, 因为不能更改常量参数, 而如果需要可以覆盖默认参数。
- 调用函数为其提供值时, 默认参数将被覆盖。例如, 调用函数sum(10, 15, 25, 30)会将z和w的值分别覆盖为25和30。
- 在调用函数期间, 从调用函数到被调用函数的参数从左到右复制。因此, sum(10、15、25)会将10、15和25分配给x, y和z。因此, 默认值仅用于w。
- 将默认值用于函数定义中的参数后, 该参数的所有后续参数都必须具有默认值。也可以说默认参数是从右到左分配的。例如, 以下函数定义无效, 因为默认变量z的后续参数不是默认变量。
// Invalid because z has default value, but w after it
// doesn't have default value
int sum( int x, int y, int z=0, int w)
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
【C++中函数的默认参数用法指南】被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C ++ STL通过激烈的问题解决过程来训练和掌握这些概念。
推荐阅读
- 算法设计(查找链表的长度(迭代和递归))
- 导致笔记本打开变慢的“凶手”到底是谁
- windwos7小技巧——aero的设置及窗口颜色
- 重装windwos xp后 你不得不知5个设置
- 多系统安装经常见问题整合
- 必须知道的windows710个贴心技巧
- 学习的忠告——学习Linux的7句忠告
- “熊猫烧香”后又一厉害病毒清除办法
- Win7实用小技巧-打印处理