1. 例子
// template只对第一个函数生效, 每个模板函数前面都有一个templatetemplate<typename T, typename T2> // template<class T1>void MySwap(T& a, T& b) {T tmp = a;b = a;a = tmp;}void test() {int a = 1;int b = 2;MySwap(a, b); // 自动类型推导MySwap<int>(a, b); // 显式类型推导}
2. 模板函数和普通函数的区别?
- 函数模板不允许自动类型转化 (传参必须严格按照类型匹配)
普通函数能自动类型转化(传参会根据类型自动匹配)
template<typename T>int add(T a, T b) {return a + b;}int add(int a, char b) {return}void test(){int a = 1;int b = 2;char c = 3;char d = 3;add(a, b); //add(c, d); //add(a, b); //}
3. 模板函数和普通函数的调用规则
template<typename T>int add(T a, T b) {return a + b;}int add(int a, int b) {return}
