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

     

posted @ 2023-09-12 19:02  iu本u  阅读(19)  评论(0)    收藏  举报