templace基础
模板函数在编译时才创建,开始时并不会创建
- 类型做模板的参数
#include<iostream>
#include<vector>
#include<string>
template<typename T>
void Print(T value){
std::cout<<value<<std::endl;
}
int main(){
Print<int>(5);
Print(5.3);//可以隐式表示类型
Print<std::string>("Hello");
}
- 指定类型值做模板的参数
#include<iostream>
#include<vector>
#include<string>
template<int N>//N模板参数
class Array{
private:
int IntArray[N];
public:
int GetSize ()const{
return N;
}
};
int main(){
Array<5>array;
std::cout<<array.GetSize()<<std::endl;
}
- 两种联合使用
template<typename T,int N> class Array{ private: T IntArray[N]; public: T GetSize ()const{//这里使用的是T作为返回值 return N; } }; int main(){ Array<int,5>array;//传了int类型作为模板参数,所以能通过;string就不能通过编译 std::cout<<array.GetSize()<<std::endl; }