首先记住,对于模板来说那部分代码不是实际存在的,只有在被调用的时候才会存在。
一个函数:
/*我们在调用之前模板并不真正存在,调用的时候这个函数才被明确了,他只是模板,不是代码*/
template<typename T>
void Print(T value) {
std::cout << value << std::endl;
}
调用:
Print<int>(5);
Print(5);
Print(5.2f);
Print("abc");
或者类:
template<typename T, int N>
class Array {
private:
int m_Array[N];/*这是在栈上创建的,因此大小必须直接给出*/
T m_ArrayT[N];
public:
int GetSize() const { return N; }
};
调用:
Array<int, 5> array;
从这个例子可以看出,不仅可以指定数据类型为模板,也可以指定数据为模板