如下是一个函数模板和类模板使用的demo, 对于函数模板来说,模板的数据类型针对函数中的入参,对于类模板来说,模板的数据类型针对类中的成员变量,具体的数据类型,由传入的数据决定。
// 模板函数
template <typename T>
T max(T a, T b) {
return (a > b) ? a : b;
}
// 模板类
template <typename T>
class MyClass {
public:
T value;
MyClass(T value) : value(value) {}
T getValue() {
return value;
}
};
// 主函数
int main() {
// 调用模板函数
int max_int = max(10, 20);
double max_double = max(3.14, 2.71);
// 创建模板类对象
MyClass<int> my_int(10);
MyClass<double> my_double(3.14);
// 获取模板类对象的值
int int_value = my_int.getValue();
double double_value = my_double.getValue();
// 打印结果
cout << "最大整数:" << max_int << endl;
cout << "最大浮点数:" << max_double << endl;
cout << "模板类整数:" << int_value << endl;
cout << "模板类浮点数:" << double_value << endl;
return 0;
}
头文件
// header.h
// 类模板
template <typename T>
class MyClass {
public:
T value;
MyClass(T value) : value(value) {}
T getValue() {
return value;
}
};
// 函数模板
template <typename T>
T max(T a, T b) {
return (a > b) ? a : b;
}
调用文件
// main.cpp
#include "header.h"
int main() {
// 调用类模板
MyClass<int> my_int(10);
MyClass<double> my_double(3.14);
// 调用函数模板
int max_int = max(10, 20);
double max_double = max(3.14, 2.71);
// 打印结果
cout << "模板类整数:" << my_int.getValue() << endl;
cout << "模板类浮点数:" << my_double.getValue() << endl;
cout << "最大整数:" << max_int << endl;
cout << "最大浮点数:" << max_double << endl;
return 0;
}