#include "iostream"
using namespace std;
template<typename T>
void Print(T a) {
cout << a << endl;
}
int main() {
int a = 5;
double b = 2.3;
char c = 'e';
string d = "sdfasd";
Print(a);
Print(b);
Print(c);
Print(d);
return 0;
}
它可以不用Print<类型>(参数);
直接用就能直接推导,从另一种形式来讲,模板是更高级的重载
为什么12行Print会报错呢,因为Print没有参数可以推导T的类型,所以必须显示的指定类型,例如int
#include "iostream"
using namespace std;
template<typename T>
void Print(T a = 123) {
cout << a << endl;
}
int main() {
Print<int>();
Print<string>();
return 0;
}
当参数有默认值的时候,必须类型匹配才能不输入参数
#include "iostream"
using namespace std;
template<typename T, int T1 = 23>
void Print(T a = 123) {
cout << a << " " << T1 << endl;
}
int main() {
Print<int>();
Print<int, 45>(44);
Print<string>("fgsd");
return 0;
}
作为模板也可以当作参数,一定支持整型、枚举以及指针,其它根据编译器情况可能有不同