对于C++泛型编程,我们可以使用模板来实现。在C++中,我们可以使用函数模板和类模板来实现泛型编程。
C++函数模板
C++函数模板是一种特殊的函数,它可以像参数一样的方式接受一种数据类型,并使代码对于任何数据类型都可用。其语法格式如下:
template <typename T>
return_type function_name (arguments)
{
// function code here
}
typename T
表示通用数据类型,我们可以使用任何类型的名称替换这里的T。- 然后是函数的返回类型和参数列表。
- 在函数定义中,可以使用typename T替换实际数据类型。
接下来,让我们来看一个例子,用C++函数模板实现两个数相加。
#include<iostream>
using namespace std;
// 函数模板
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
cout<< add<int>(2, 3) << endl; // 输出5
cout<< add<float>(1.2, 2.3) << endl; // 输出3.5
cout<< add<char>('A', 'B') << endl; // 输出131
return 0;
}
C++类模板
C++类模板也是一种特殊的类,它可以像参数一样的方式接受一种数据类型,并使代码对于任何数据类型都可用。语法格式如下:
template <typename T>
class class_name
{
// class code here
};
接下来,让我们来看一个例子,用C++类模板实现一个计算器。这个计算器可以用于整数、浮点数和复数的运算。
#include<iostream>
using namespace std;
//类模板
template <typename T>
class Calculator {
public:
T add(T x, T y) {
return x + y;
}
T subtract(T x, T y) {
return x - y;
}
T multiply(T x, T y) {
return x * y;
}
T divide(T x, T y) {
if (y != 0) return x / y;
throw "Division by zero";
}
};
int main() {
// 整数计算器
Calculator<int> intCalc;
cout<< intCalc.add(2, 3) << endl; // 输出5
cout<< intCalc.subtract(2, 3) << endl; // 输出-1
cout<< intCalc.multiply(2, 3) << endl; // 输出6
cout<< intCalc.divide(6, 3) << endl; // 输出2
// 浮点数计算器
Calculator<float> floatCalc;
cout<< floatCalc.add(1.2, 2.3) << endl; // 输出3.5
cout<< floatCalc.subtract(1.2, 2.3) << endl; // 输出-1.1
cout<< floatCalc.multiply(1.2, 2.3) << endl; // 输出2.76
cout<< floatCalc.divide(4.8, 2.4) << endl; // 输出2
// 复数计算器
// 复数的运算需要重载运算符,这里就不做示例了
return 0;
}
以上就是C++函数模板和类模板的基本用法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++泛型编程函(数模板+类模板) - Python技术站