非類型模版
之前我們寫的模版都是在不知道模版(類)中有的變量的類型是什么的時候,我們先用模版參數定義,當類實例化的時候在傳參確認
非類型模版:模版參數定義的時候也可以定義整型類型(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;
}