本文內容摘錄自:從零開始學c++程式設計,僅作為入門使用
函式模板
函式模板把具有相同程式**的函式集中寫成乙個函式,並且把各個函式不同資料型別的部分改以模板形式引數來替代,即可通過傳遞不同的資料型別的引數來建立例項函式。函式模板的宣告格式與說明如下:
template關鍵字class在這裡並不是用來定義類的意思,而是用來宣告模板形式引數。返回資料型別 函式名稱(引數1, 引數2, …)
#include
#include
using namespace std;
template
//定義與宣告func模板函式
t func
(t n)
intmain()
非型別引數模板
「非型別引數」表示在模板函式的引數行中含有基本資料型別,如int、float等,定義如下:
template函式型別 函式名稱(函式引數)
#include
#include
using namespace std;
template int array_size>
void
showarray
(arraytype (
&array)
[array_size])
cout<}int
main()
;showarray
(a);
return0;
}
類模板
在設計類時,將資料型別以模板引數取代,在使用時再指定資料型別,這種類就稱為類模板。
類模板的宣告格式如下:
template若是類成員函式定義在類外部,則必須附加類模板宣告與範圍解析運算子(::),如下所示:class 類名稱
template 宣告完類模板後,就要用類模板來產生物件,物件的產生方式如下:類名稱《資料型別》 物件名稱;//宣告物件
或類名稱《資料型別》 物件名稱();//物件名稱、物件和建構函式的合併宣告
#include
#include
using namespace std;
template
class function
void
show()
};intmain()
堆疊類模板
#include
#include
using namespace std;
//設定類模板的型別引數type的預設值為整數int,非型別引數的型別值為整數int,預設值為5
template int,
int size =
5>
//類模板宣告
class stack
void
push
(type data)
; type pop()
;};template int size>
void stack
:: push (type data)
template int size>
type stack::
pop(
)int
main()
非型別引數類模板
在宣告物件時除了指定此物件的資料型別外,通過常數值的傳遞還可以同時指定物件內陣列元素的個數與堆疊空間。
#include
#include
using
namespace std;
template
<
classt,
int n>
//宣告模板形式引數t,資料型別固定引數n
class
caladd
//宣告類模板calladd
//caladd類的建構函式
void
innum()
;void
addnum()
;void
showresult()
;};template
<
classt,
int n>
void caladd
::innum()
//成員函式innum()
}template
<
classt,
int n>
void caladd
::addnum()
}template
<
classt,
int n>
void caladd
::showresult()
cout<<
" = "
<< total <}int
main()
C 之模板 模板的學習 學習模板
c 之模板 模板學習 學習模板 模板就是建立通用的模具,大大提高復用性 函式模板 c 提供兩種模板機制函式模板和類模板 函式模板語法 函式模板作用 建立乙個通用函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的型別來代表 語法 template typename t 函式宣告或定義解釋 t...
C 模板學習
模板定義 模板就是實現 重用機制的一種工具,它可以實現型別引數化,即把型別定義為引數,從而實現了真正的 可重用性。模版可以分為兩類,乙個是函式模版,另外乙個是類模版。類模板 允許使用者為類定義一種模式,使得類中的某些資料成員 某些成員函式的引數 某些成員函式的返回值,能夠取任意型別 包括系統預定義的...
C 學習 模板
當你在寫 的時候可能會遇到這樣的情況,多處地方都需要呼叫同乙個功能 方法,但是我們不知道呼叫者傳遞進來的引數型別,以及這個方法的返回型別,或許你可能想到的是過載或者重寫,但是還有另一種方式實現就是 模板。當然除此之外,還有類模板,它是實現 重用的一種工具。模板可以說是分為兩種型別,一種是類模板,一種...