C++ —— 函数默认参数

Posted 借我十斤肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ —— 函数默认参数相关的知识,希望对你有一定的参考价值。

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

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

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

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

2 示例1

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

  1. func1():无默认参数
  2. 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 注意事项

注意:

  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会报错

在这里插入图片描述

应该将形参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++ —— 函数默认参数的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用默认参数调用函数

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

C++ 没有合适的默认构造函数(无参数构造函数)

Python 默认参数混淆

C++ (带有默认参数的函数参数)缺省函数参数

从汇编看c++函数的默认参数