函数重载与参数缺省
题目描述
下面这段代码利用函数重载实现了multiply
函数:
#include <iostream>
using std::cin, std::cout, std::endl;
int multiply(int x, int y) {
return x * y;
}a
int multiply(int x, int y, int z) {
return x * y * z;
}
int multiply(int x, int y, int z, int a) {
return x * y * z * a;
}
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d;
cout << multiply(a, b) << endl;
cout << multiply(a, b, c) << endl;
cout << multiply(a, b, c, d) << endl;
}
请完成如下代码填空,在效果不发生改变的情况下将multiply
函数修改为缺省参数的版本。
关于输入
共一行,为空格分隔的四个整数a、b、c、d,其积在int范围内。
关于输出
共三行。
第一行为 a * b 的结果;
第二行为 a * b * c 的结果;
第三行为 a * b * c * d 的结果。
参考答案
#include <iostream>
#include <utility>
using std::cin, std::cout, std::endl;
int multiply(int a, int b, int c = 1, int d = 1) {
return a * b * c * d;
}
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d;
cout << multiply(a, b) << endl;
cout << multiply(a, b, c) << endl;
cout << multiply(a, b, c, d) << endl;
}
// 下一行代码用于确保你未使用函数重载,不用管
static_assert(std::is_function_v<decltype(multiply)>);