第六章、C++的函数
C++ 语言的函数在 C 语言的基础上扩充了一些功能。这些功能包括函数的缺省参数、函数重载等。
1. 函数的缺省参数
在 C 语言中,如果我们要定义函数来实现两个整数、三个整数和四个整数相加并返回这些数的和,一般我们要写三个函数,如下所示:
int myadd2(int a, int b) {
return a + b;
}
int myadd3(int a, int b, int c) {
return a + b + c;
}
int myadd4(int a, int b, int c, int d) {
return a + b + c + d;
}
在调用时也要根据名字依次调用,如:myadd2(1,2) 或 myadd3(10, 20, 30) 或 myadd4(100, 200, 300, 400)。
C++ 使用缺省参数的语法可以将上述问题简单的解决,这个解决方法就是 C++ 新增的语法:函数的缺省参数(default argument)。
函数的缺省参数 允许函数在声明时给定缺省参数,当函数调用没有给定足够的实际参数时,形式参数将使用缺省参数来代替实际参数对函数进行调用。
语法
返回类型 函数名/或成员函数名(形参类型 形参名1[ = 缺省值1],形参类型 形参名2[ = 缺省值2], ...) {
...
}
示例
// filename: default_args.cpp
#include <iostream>
using namespace std;
int myadd(int a, int b, int c=0, int d=0) {
return a + b + c + d;
}
int main(int argc, char * argv[]) {
cout << myadd(1, 2) << endl;
cout << myadd(10, 20, 30) << endl;
cout << myadd(100, 200, 300, 400) << endl;
return 0;
}
编译和运行结果如下
weimz@mzstudio:~$ g++ -o default_args default_args.cpp
weimz@mzstudio:~$ ./default_args
3
60
1000
说明
缺省参数必须自右至左依次存在。如果一个函数的形式参数有缺省参数,则其右侧的所有形式参数都必须有缺省参数。
如下列写法就是错误的。
int myadd(int a, int b=100, int c, int d=0) {
return a + b + c + d;
}
因为 形参 b 有缺省参数,而 形参 c 却没有缺省参数,则编译会报错。
练习
写一个函数 mymul 来实现两个整数、三个整数、四个相乘,并返回相乘后的乘积。
如:
int mymul(...) {
...
}
请完善上述代码。