C++模板编程是一种利用模板技术来实现泛型编程的方法。在C++中,T[]和R(A1,A2,A3)被视为类型的原因是它们可以作为模板参数来实例化模板类或函数,并在编译时进行类型检查和代码生成。
template <typename T>
T calculateAverage(T arr[], int size) {
T sum = 0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum / size;
}
在使用时,可以通过传递不同类型的数组来实例化该函数:
int intArray[] = {1, 2, 3, 4, 5};
double doubleArray[] = {1.1, 2.2, 3.3, 4.4, 5.5};
int intAvg = calculateAverage(intArray, 5);
double doubleAvg = calculateAverage(doubleArray, 5);
template <typename R, typename A1, typename A2, typename A3>
class FunctionWrapper {
private:
R (*func)(A1, A2, A3);
public:
FunctionWrapper(R (*f)(A1, A2, A3)) : func(f) {}
R operator()(A1 arg1, A2 arg2, A3 arg3) {
return func(arg1, arg2, arg3);
}
};
在使用时,可以通过传递不同类型的函数指针来实例化该模板类,并调用封装的函数:
int add(int a, int b, int c) {
return a + b + c;
}
double multiply(double a, double b, double c) {
return a * b * c;
}
FunctionWrapper<int, int, int, int> addWrapper(add);
FunctionWrapper<double, double, double, double> multiplyWrapper(multiply);
int result1 = addWrapper(1, 2, 3);
double result2 = multiplyWrapper(1.1, 2.2, 3.3);
通过使用T[]和R(A1,A2,A3)作为类型,C++模板编程可以实现对不同类型数组和函数的泛型操作,提高代码的复用性和灵活性。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云