非类型模版
之前我们写的模版都是在不知道模版(类)中有的变量的类型是什么的时候,我们先用模版参数定义,当类实例化的时候在传参确认
非类型模版:模版参数定义的时候也可以定义整型类型(c++20之后才支持其他类型)的变量
主要用于确定数组的大小
偏模版
模版的匹配就是参数的匹配
#include<iostream>
#include<string>
#include<vector>
using namespace std;
template<class T1, class T2>
class Data
{
public:
Data() { cout << "Data<T1, T2>" << endl; }
private:
T1 _d1;
T2 _d2;
};
//全特化
template<>
class Data<int, char>
{
public:
Data() { cout << "Data<int, char>" << endl; }
private:
int _d1;
char _d2;
};
//偏特化
template<class T>
class Data<T,int>
{
public:
Data() { cout << "Data<T,int>" << endl; }
private:
int _d1;
char _d2;
};
//偏特化2.0
template<class T1, class T2>
class Data<T1*, T2*>
{
public:
Data() { cout << "Data<T1*, T2*>" << endl; }
};
//偏特化3.0
template<class T1, class T2>
class Data<T1*, T2&>
{
public:
Data() { cout << "Data<T1*, T2&>" << endl; }
};
int main()
{
Data <int, int> d1;
Data<int, char> d2;
Data<char,int> d3;
Data<int*, int*> d4;
Data<int*, int&>d5;
return 0;
}