1 函数参数默认值概念
函数参数的默认值是指在函数定义时,为参数指定一个默认值。当调用该函数时,如果没有给参数传递值,则会使用该参数的默认值。
在C++中,定义具有默认参数的函数的语法格式:
return_type function_name(type parameter_name = default_value);
其中,
-
parameter_name
表示函数的参数名 -
default_value
表示参数的默认值
函数参数默认值的基本用法是在调用函数时,如果没有提供某个参数的值,则使用该参数的默认值。这可以简化函数调用,提高代码的可读性和可维护性。
#include <iostream>
// 定义一个函数,用于计算两个数的和
// 参数b采用默认值,默认值为0
int sum(int a, int b = 0)
{
return a + b;
}
int main()
{
// 调用函数,只提供一个参数
int result1 = sum(5);
std::cout << "5 + 0 = " << result1 << std::endl;
// 调用函数,提供两个参数
int result2 = sum(5, 3);
std::cout << "5 + 3 = " << result2 << std::endl;
return 0;
}
2 函数参数默认值注意事项
在使用函数参数默认值时,需要注意以下几点:
-
默认值的生效条件:只有当函数调用时没有提供该参数的值时,才会使用默认值。如果提供了该参数的值,则使用提供的值。
-
默认值表达式:如果默认值是表达式,则该表达式是惰性求值的。也就是说,只有在需要使用默认值时才会计算表达式的值。
-
设置默认值的小技巧:在设置默认值时,应该考虑参数的常见值和合理范围,以及程序的健壮性和可维护性。
-
函数的默认参数从左向右,如果一个参数设置了默认参数,那么这个参数之后的参数都必须设置默认参数。
-
如果函数声明和函数定义分开写,函数声明和函数定义不能同时设置默认参数。
其中,函数声明和函数定义分开的代码示例如下:
// func.h
#ifndef __FUNC_H__
#define __Func_H__
// 声明函数
// num2采用默认值
void func(int num1, int num2 = 0);
#endif
// func.cpp
#include <iostream>
#include "func.h"
// func函数的实现
void func(int num1, int num2)
{
std::cout << "num1=" << num1 << std::endl;
std::cout << "num2=" << num2 << std::endl;
}