C++模版

目錄

 

1. C++類模版

2. C++類模版函數

3. 模版參數


1. C++類模版

格式:

template <類型參數表>
class 類模板名{
    成員函數和成員變量
};

A. 類型參數表
    class類塑參數1, class類型參數2, ...

B. 成員函數和成員變量在內外部的寫法
    template <類型參數表>
    返回值類型  類模板名<類型參數名列表>::成員函數名(參數表)
    {
        ...
    }

C. 用類模板定義對象的寫法如下:
    類模板名<真實類型參數表> 對象名(構造函數實際參數表);

    如果類模板有無參構造函數,那麼也可以使用如下寫法:
    類模板名 <真實類型參數表> 對象名;
#include <iostream>
#include <string>

using namespace std;

template <class T>
class MyT
{
private:
	T val;
public:
	MyT(T t) :val(t) {};
	~MyT() {};

	void Print() 
	{
		cout << "val:" << val << endl;
	};
};
//測試用例
void main()
{
	MyT<int> myInt(1);
	myInt.Print();

	MyT<string> myStr("hello world");
	myStr.Print();
}

 

2. C++類模版函數

template <class T>
class A
{
public:
	template <class T2>
	void Func(T2 t) { cout << t; }  //成員函數模板
};
//用例
void main()
{
	A<int> a;
	a.Func('K');  //成員函數模板Func被實例化
	a.Func("hello");
}

3. 模版參數

//1. 固定模版參數
template <typename T>
class CFixT
{
};

CFixT<int> fixT0;
CFixT<string> fixT1;

//2. 可變模版參數
template <typename ... Types>
class CChgT
{
};
CChgT<> chgT0; 
CChgT<int> chgT1;
CChgT<int, string> chgT2;

//3. 避免出現0個可變參數
template <typename T, typename ... Types>
class COneFixChg
{
};
COneFixChg<int> OneFixChgT0;
COneFixChg<int, string> OneFixChg1;
COneFixChg<int, string, double> OneFixChgT2;

 

發佈了337 篇原創文章 · 獲贊 65 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章