1、普通变量模板
#include <iostream>
using namespace std;
template<typename T>
int g_value = 0;
int main(){
g_value<int> = 10;
g_value<double> = 11;
cout << g_value<int> << "," << g_value<double> << endl;
return 0;
}
2、类模板静态成员
#include <iostream>
using namespace std;
template<typename T>
class A{
public:
static int m_nData1;
static T m_nData2;
};
template<typename T>
int A<T>::m_nData1 = 10;
template<typename T>
T A<T>::m_nData2 = {};
template<typename T>
T g_nData = A<T>::m_nData2;
int main(){
A<int>::m_nData1 = 10;
A<double>::m_nData2 = 1.22;
g_nData<char> = 'A';
g_nData<double> = 1.44;
cout << A<int>::m_nData1 << ", " << A<double>::m_nData2 << ", " << g_nData<char> << ", " << g_nData<double> << endl;
return 0;
}
3、零初始化
#include <iostream>
using namespace std;
template<typename T>
void test(){
T a{}; //如果是基本类型就用0初始化,如果是自定义类就调用默认构造函数
}
class A{
public:
A(int, double){
cout << "A(int, double)" << endl;
}
private:
int d1;
double d2;
};
template<typename T>
void test2(){
T a{1, 3.4}; //T的构造函数必须有两个参数,一个是整型,一个是浮点型,或者可以进行隐式转化
}
int main(){
test<int>();
test2<A>();
return 0;
}