#include #include

using namespace std;

// 定义一个没有参数的sum函数 float sum() { cout << "sum()" << endl; return 0; }

// 定义一个模板函数sum,可以接受多个参数并返回它们的和 template <class T, typename ... type> T sum(T ret, type ... args) { cout << "sum(args...) " << ret << endl; return ret + sum(args...); }

// 定义一个模板函数average,可以计算多个参数的平均值 template <class T, typename ... type> T average(int n, T ret, type ... args) { // 调用sum函数计算参数的总和,并将结果累加到ret上 ret += sum(args...); // 计算平均值并返回 return ret / n; }

int main() { // 调用sum函数,传入参数10.0,输出sum() cout << sum(10.0) << endl; // 调用sum函数,传入参数10.0, 2, 20,输出sum(args...) 10.0,并返回32.0 cout << sum(10.0, 2, 20) << endl; // 调用average函数,传入参数3, 1.1, 2.2, 3.3,先调用sum函数求和,再计算平均值,输出7.6 cout << average(3, 1.1, 2.2, 3.3) << endl;

return 0;

}

解释:

  1. 首先定义了一个没有参数的sum函数,输出"sum()"并返回0。
  2. 然后定义了一个模板函数sum,可以接受多个参数并返回它们的和。该函数的递归终止条件是参数个数为0,此时直接返回0。否则,先输出"sum(args...) "和第一个参数的值,然后递归调用sum函数,传入剩余的参数,并将第一个参数与递归调用的结果相加。
  3. 接着定义了一个模板函数average,可以计算多个参数的平均值。该函数首先调用sum函数,传入除了第一个参数以外的剩余参数,并将结果累加到第一个参数上,然后计算平均值并返回。
  4. 在main函数中,先调用sum函数,传入参数10.0,输出"sum()"并返回0。然后调用sum函数,传入参数10.0, 2, 20,输出"sum(args...) 10.0"并返回32.0。最后调用average函数,传入参数3, 1.1, 2.2, 3.3,先调用sum函数求和并将结果累加到1.1上,再计算平均值并输出7.6
#include iostream#include stringusing namespace std;float sum	cout sum endl;	return 0;template class T typename typeT sumT ret type args	cout sumargs ret endl;	return ret + sumargs;template cl

原文地址: https://www.cveoy.top/t/topic/iNbe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录