c++中模板_類别範本的宣告和定義
一、函式模板用法
1.1申明和定義
Ø 在函式申明和定義前面,加一個模板template<classT, classC>就行,其餘正常定義和申明
Ø 呼叫時,跟正常函式一樣呼叫
注意:
Ø 模板在呼叫時,才確定引數的具體型別!!!
Ø 模板的宣告或定義只能在全域性,名稱空間或類範圍內進行。即不能在區域性範圍,函式內進行,比如不能在main函式中宣告或定義一個模板
1.2呼叫示例
template<classT, classC> T add1(T, T, C);
int main()
{
add1(1, 2, 3); //只用到模板T,沒有用到模板C
add1(1.5, 3.5, 3); //只用到模板T,沒有用到模板C
return NULL;
}
template<classT, classC> T add1(T a, T b,C c)
{
return a + b; //只用到模板T,沒有用到模板C
}
二、類别範本用法
2.1類别範本的宣告和定義
2.1.1類别範本的申明
Ø 在類前面加一個模板template<classT, classC>就行
2.1.2類别範本的定義
Ø 在類在類前面加一個模板template<classT, classC>
Ø 在定義類後加<T,C>。比如類A的函式Add,定義為void A<int>::Add(T a, T b)
2.1.3類别範本呼叫
將在定義類後加<T,C>改為<int,double>
比如示例一個物件a:
A<int> a;
2.2具體示例
*.h申明
template<classT> classA//類别範本宣告,類前面加template<class T>
{
public:
T a1;
int Add1(T t1,T t2);
};
*.cpp定義
//類别範本宣告,類前面加template<class T>。並且類A後面帶這個<T>
template<classT> intA<T>::Add1(Tt1, T t2)
{
return t1 +t2;
}
成員函式呼叫
A<int> a;//例項化一個類,A後面帶這個A<int>
int aa =a.Add1(2, 3);//呼叫模板成員函式,跟模板函式一樣呼叫就行
三、模板類預設值設定
3.1模板類的形參為型別形參
Ø 類别範本可以設定預設值,函式模板不能設定預設值
Ø 設定預設值時,儘量放在最後,不要放在開頭
Ø 如果放在開頭,後面一定要設定預設值,並且跟第一個預設值一樣
例如:template<classT1 = int,class T2 =int> class CeilDemo{…}
3.2示例
TemplateDemo03.h
#ifndefTEMPLATE_DEMO_03
#define TEMPLATE_DEMO_03
//定義帶預設型別形參的類别範本。這裡把T2預設設定為int型。
template<classT1, classT2 = int>class CeilDemo{
public:
int ceil(T1,T2);
};
//在類别範本的外部定義類中的成員時template後的形參表應省略預設的形參型別。
template<classT1, classT2>
int CeilDemo<T1,T2>::ceil(T1a, T2 b){
return a>> b;
}
#endif
TemplateDemo03.cpp
#include<iostream.h>
#include "TemplateDemo03.h"
void main(){
CeilDemo<int> cd;
cout <<cd.ceil(8, 2) << endl;
}
參考內容:
http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html
http://blog.csdn.net/zhongshan_c/article/details/8917470
http://blog.csdn.net/elcoteq983/article/details/7032213
相關文章
- c++函式模板和類别範本C++函式
- 類别範本 單例模板單例
- C++ 類别範本的寫法C++
- C++知識點57——類别範本(2、類别範本的區域性特化與預設模板實參)C++
- C++之函式模板與類别範本的區別(三)C++函式
- 【C++ 泛型程式設計01:模板】函式模板與類别範本C++泛型程式設計函式
- c++佇列類别範本的實現C++佇列
- 【C++】 59_類别範本深度剖析C++
- C++ 單例類别範本(詳解)C++單例
- 【C++】 61_智慧指標類别範本C++指標
- 陣列類别範本陣列
- 類别範本及其成員函式的定義及注意事項函式
- 自定義 Xcode ViewController 類别範本XCodeViewController
- 隱藏在 SDK 中的單例類别範本單例
- 類别範本的常見用法
- c++類别範本成員函式報錯C++函式
- c++11-17 模板核心知識(二)—— 類别範本C++
- pua 八股類别範本
- C++ Templates (2.2 使用Stack類别範本 Use of Class Template Stack )C++
- C++的一個簡單的控制程式碼類别範本C++
- 非型別的類别範本引數型別
- C++ Templates (2.1 類别範本Stack的實現 Implementation of Class Template Stack)C++
- C++ Templates (2.3 類别範本的區域性使用 Partial Usage of Class Templates)C++
- C++學習筆記 第59課類别範本深度刨析C++筆記
- c++中模板類的成員函式的宣告與定義應該放在標頭檔案裡C++函式
- C++ 宣告與定義C++
- 模板類成員函式的定義和宣告為什麼要放在一個檔案中函式
- C++中類及類的定義 (轉)C++
- 進階篇_STL詳解(函式模板特化,類别範本特化,用模板實現自己的通用演算法)函式演算法
- 封裝不同類别範本的隨機數生成器封裝隨機
- 一種將函式模板定義和宣告分開的方法函式
- 【C++注意事項】2 變數宣告和定義C++變數
- 資料結構初階--棧和佇列(講解+類别範本實現)資料結構佇列
- 類别範本繼承和部分具體化例子及非型別引數繼承型別
- C++模板的定製二:定製C++類 (轉)C++
- 【演算法學習】數學專題 有理數類别範本演算法
- [C++]變數宣告與定義的規則C++變數
- 類别範本的簡單應用(用於儲存不同型別資料的類容器)型別