C++ —— 函数默认参数
Posted 借我十斤肉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ —— 函数默认参数相关的知识,希望对你有一定的参考价值。
1 什么是默认参数?如何定义默认参数?
在C++中,函数的形参列表中的形参是可以有默认值的。有默认值的参数即为默认参数
在函数调用时,有默认参数可以缺省。
语法:返回值类型 函数名 (参数= 默认值){函数体}
2 示例1
示例1分别定义了两个加减法函数
- func1():无默认参数
- func2():有默认参数
示例1
#include <iostream>
using namespace std;
// 加减法函数1(无默认参数)
int func1(int a, int b, int c, bool is_add)
{
if (is_add)
{
return a + b + c;
}
else
{
return a - b - c;
}
}
// 加减法函数2(有默认参数)
int func2(int a, int b, int c, bool is_add = true)
{
if (is_add)
{
return a + b +c;
}
else
{
return a - b -c;
}
}
int main()
{
int abs1 = func1(10, 5, 2, true); //参数is_add为true,执行减法
int abs2 = func1(10, 5, 2, false); //参数is_add为false,执行减法
int abs3 = func2(10, 5, 2); //参数is_add默认为true,若执行加法,则第三个参数可以缺省
int abs4 = func2(10, 5, 2, false); //参数is_add为false,执行减法
cout << "abs1 = " << abs1 << endl;
cout << "abs2 = " << abs2 << endl;
cout << "abs3 = " << abs3 << endl;
cout << "abs4 = " << abs4 << endl;
return 0;
}
输出结果:
abs1 = 17
abs2 = 3
abs3 = 17
abs4 = 3
3 注意事项
注意:
- 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值。(示例2)
- 函数声明和函数实现(即函数定义),只允许其中一个有默认值,即如果函数声明有默认值,则函数实现的时候就不能有默认参数。(示例3)
示例2
int func1(int a, int b = 5, int c, bool is_add)
{
if (is_add)
{
return a + b + c;
}
else
{
return a - b - c;
}
}
示例2会报错
应该将形参b右边的所有形参都设置一个默认值
int func1(int a, int b = 5, int c = 2, bool is_add = false)
{
...
}
示例3
#include <iostream>
using namespace std;
// 函数声明
int func(int a, int b, int c, bool is_add = true); //函数声明中设置了参数is_add的默认值
int main()
{
int abs = func(10, 5, 2);
cout << "abs = " << abs << endl;
return 0;
}
// 函数实现
int func(int a, int b, int c, bool is_add = true) //函数实现中也设置了参数is_add的默认值
{
if (is_add)
{
return a + b + c;
}
else
{
return a - b - c;
}
}
示例3会报错
错误 C2572 “func”: 重定义默认参数 : 参数 1
以上是关于C++ —— 函数默认参数的主要内容,如果未能解决你的问题,请参考以下文章
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情