模板是c++支援引數化多型的工具,使用模板可以使使用者為類或者函式宣告一種一般模式,使得類中的某些資料成員或者成員函式的引數、返回值取得任意型別。c++中的模板有函式模版和類模版兩種形式,下面將分別介紹。
template 返回型別 函式名(引數列表)
其中template和class是關見字,class可以用typename 關見字代替,在這裡typename 和class沒區別,<>括號中的引數叫模板形參,模板形參和函式形參很相像,模板形參不能為空。一但宣告了模板函式就可以用模板函式的形參名宣告類中的成員變數和成員函式,即可以在該函式中使用內建型別的地方都可以使用模板形參名。模板形參需要呼叫該模板函式時提供的模板實參來初始化模板形參,一旦編譯器確定了實際的模板實參型別就稱他例項化了函式模板的乙個例項。
#include #include "method.h"
using namespace std;
int main()
templatevoid swap1(t& t1, t& t2);
#include "method.cpp"
templatevoid swap1(t& t1, t& t2)
類模版的格式為:
templateclass 類名
;
類模板和函式模板都是以template開始後接模板形參列表組成,模板形參不能為空,一但宣告了類模板就可以用類模板的形參名宣告類中的成員變數和成員函式,即可以在類中使用內建型別的地方都可以使用模板形參名來宣告。比如:
templateclass a;
下面給出乙個用來對元素進行入棧出棧的類模版例項:
#include #include #include #include #include using namespace std;
template class stack
};
template void stack::push (t const& elem)
template void stack::pop ()
// 刪除最後乙個元素
elems.pop_back(); }
template t stack::top () const
// 返回最後乙個元素的副本
return elems.back(); }
int main()
{ try {
stackintstack; // int 型別的棧
stackstringstack; // string 型別的棧
// 操作 int 型別的棧
intstack.push(7);
cout << intstack.top() 《當上面的**被編譯和執行時,它會產生下列結果:
7hello
exception: stack<>::pop(): empty stack
注意:模板的宣告或定義只能在全域性,命名空間或類範圍內進行。即不能在區域性範圍,函式內進行,比如不能在main函式中宣告或定義乙個模板。 C 中template(模版)的使用
我們在程式設計的時候總是會遇到一些類似的模組,只是模組中的形參的資料型別不同,導致我們要不斷的去更改模組的。這裡就涉及到過載的知識點了。例如以下的幾種情況 函式1.int max int x,int y 函式2.float max float x,float y 函式3.double max dou...
C 中Template的用法
指c 程式設計設計語言中採用型別作為引數的程式設計,支援通用程式設計。c 的標準庫提供許多有用的函式大多結合了模板的觀念,如stl以及io stream。函式模板定義一族函式。include template typename t void swap t a,t b a b b tmp int ma...
C 模版的用法
模板是實現 重用機制的一種工具,實質就是實現型別引數化,即把型別定義為引數。c 提供兩種模板 函式模板,類模板 template t mymax t a,t b 函式char max1 mymax a b cout mymax class mymax t mymaxfuc 定義物件mymaxmax2...