一、類模板
1、類模板作用:
語法:
template
<
typename t>
class 類名
;
解釋:
#include
#include
using
namespace std;
class
person
tyname name;
tyage age;};
intmain()
2、類模板與函式模板的區別
1.類模板無法使用自動型別推導,只能顯示指定型別。
//person p("張三",28);//錯誤,類模板無法使用自動型別推導,只能顯示指定型別。
personint>p(
"張三",28
);
2、類模板在模板引數列表中可以有預設引數,例如:
template
<
class
tyname
= string,
class
tyage
=int
>
class
persons
tyname name;
tyage age;};
intmain()
3、類模板中成員函式的建立時機
4、類模板物件做函式引數
類模板例項化出的物件,向函式傳參的方式
三種傳入的方式:
示例:
template
<
class
tyname
,class
tyage
>
class
persons
void
showperson()
tyname name;
tyage age;};
//1、指定傳入型別
void
printperson1
(personsint>
&p)//2、引數模板化
template
<
typename t1,
typename t2>
void
printperson2
(persons
&p)//3、整個類模板化
template
<
class
t>
void
printperson3
(t &p)
intmain()
5、類模板與繼承
當類模板需要繼承時,需要注意以下幾點:
template
<
class
t>
class
base
;//class son:public base//錯誤,c++編譯器需要給子類分配記憶體,必須知道父類中的t的型別才可以向下繼承
class
son:
public base<
char
>
;template
<
classt1,
class
t2>
class
son:
public
;int
main()
6、類模板成員函式類外實現
template
<
classt1,
class
t2>
class
persons
tyname name;
tyage age;};
template
<
classt1,
class
t2>
persons
::persons
(t1 name, t2 age)
template
<
classt1,
class
t2>
void persons
::showperson()
7、類模板分檔案編寫
問題:
解決:
8、類模板與友元
學習目標:
全域性函式類內實現:直接宣告友元即可
全域性函式類外實現:需要提前讓編譯器知道全域性函式的存在
template
<
classt1,
class
t2>
class
persons
;//全域性函式類外實現
template
<
classt1,
class
t2>
void
printperson1
(persons
&p)template
<
classt1,
class
t2>
class
persons
//全域性函式類外實現
//加空模板引數列表
//如果全域性函式是類外實現,需要讓編譯器提前知道這個函式的存在
friend
void printperson1<
>
(persons
&p);
persons
(t1 name, t2 age)
;void
showperson()
tyname name;
tyage age;};
template
<
classt1,
class
t2>
persons
::persons
(t1 name, t2 age)
intmain()
C 學習筆記 類模板
c 中將泛型思想引入到了類,實現了類模板,使得類的實現不再關注資料元素的具體型別,而只關注類所需實現的功能,適用於編寫資料結構相關 c 中的類模板以相同的方式處理不同的型別,在類的宣告前使用template關鍵字標識將要泛型程式設計,用於說明類中使用的t是泛指型別,類模板只能顯式指定具體型別,無法像...
C 學習筆記 類模板
類模板的例項化必須由程式設計師在程式中顯式地制定。定義模板類物件的格式 類模板名 型別實參表 物件名 實參表 舉個栗子 include using namespace std const int size 10 template typename atype 定義類模板 class atype at...
初步C 類模板學習筆記
實現 在上課時間的定義給它的乙個或多個引數,這些引數代表了不同的資料型別。抽象的類。在呼叫類模板時,指定引數,由編譯系統依據引數提供的資料型別自己主動產生對應的模板類 詳細的類。c 的類模板的寫法例如以下 template 型別參數列 型別參數列的寫法就是 class 型別引數1,class 型別引...