(一)函数模板
函数的参数类型、返回值类型不固定,可以支持多种数据类型。
实现函数的数据类型参数化。
实现逻辑结构相同、数据类型不同的方法。
(二)类模板
类的参数类型不固定,可以支持多种数据类型。
实现类的数据类型参数化。
实现逻辑结构相同、数据类型不同的类。
#include < vector>
#include < iostream>
template<typename T>
T sum(const T& a, const T& b) {
return a + b;
}
template<typename T>
class BigNum {
public:
BigNum(T num) : _num(num) {}
void Print(){
std::cout << _num << std::endl;
}
private:
T _num;
};
int main(char* argc, char* argv[]) {
std::cout << sum<int>(100, 200) << std::endl;
std::cout << sum<double>(100.22, 200.66) << std::endl;
std::cout << sum(100, 200) << std::endl;
std::cout << sum(100.22, 200.66) << std::endl;
BigNum<int> big_int(800);
big_int.Print();
BigNum<double> big_double(800.88);
big_double.Print();
return 0;
}
输出
300
300.88
300
300.88
800
800.88