C++ —— 函数默认参数

文章目录

    • 1 什么是默认参数?如何定义默认参数?
    • 2 示例1
    • 3 注意事项

1 什么是默认参数?如何定义默认参数?

在C++中,函数的形参列表中的形参是可以有默认值的。有默认值的参数即为默认参数

在函数调用时,有默认参数可以缺省。

语法返回值类型 函数名 (参数= 默认值){函数体}

2 示例1

示例1分别定义了两个加减法函数

  1. func1():无默认参数
  2. func2():有默认参数

示例1

#include 

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 注意事项

注意:

  1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值。(示例2)
  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会报错

C++ —— 函数默认参数_第1张图片

应该将形参b右边的所有形参都设置一个默认值

int func1(int a, int b = 5, int c = 2, bool is_add = false)
{
     
	...
}

示例3

#include 

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++)