C 基礎學習筆記 類模板

2021-10-23 07:43:42 字數 3204 閱讀 4846

一、類模板

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 型別引...