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;
}