- 模板语法 template<class T>
- 重载选择 模板不支持转换,优先严格匹配普通函数
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
template<class T> //template<> 只对第一个参数有效 自动类型推导
//函数模板不支持 自动类型转换 如 int->char.
//c++优先考虑普通函数重载, 加<>调模板
void my_swap(T &a,T &b){
T temp = a;
a = b;
b = temp;
}
template<class T>
int my_add(T a,T b){
cout<<"temp called\n";
return a + b;
}
int my_add(int a,char b){
cout<<"normal called\n";
return a + b;
}
void test()
{
int a=10,b=20;
char c1='a',c2='b';
cout<<my_add(c1,b)<<endl; //call 普通函数
my_add(a,b); //call template
}
int main()
{
int a=2,b=3;
my_swap(a,b);
double c=2.0,d=3.1;
my_swap(c,d);
cout<<a<<"\t"<<b<<endl;
cout<<c<<"\t"<<d<<endl;
test();
}
运行结果