C 基礎學習筆記08 模板

2021-10-04 02:36:30 字數 2854 閱讀 7173

建立通用的模具,大大提高復用性

c++另一種程式設計思想成為泛型程式設計,主要利用的技術就是模板

c++提供兩種模板機制函式模板和類模板

1.1 函式模板

作用:建立乙個通用的函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的型別來代表

語法:template

函式宣告或定義

解釋:template——宣告建立模板

typename——表明其後面的符號是一種資料型別,可以用class代替

t——通用的資料型別,名稱可以替換,通常為大寫

template

<

typename t>

void

swap

(t &a,t &b)

模板呼叫:

int a=10;

int b=20;

swap

(a,b)

;//自動型別轉換

swap<

int>

(a,b)

;//顯示型別轉換

1.1.1 函式模板注意事項

自動型別推導,必須推導出一致的資料型別t才可以使用

模板必須要確定出t的資料型別,才可以使用

1.1.2 普通函式與函式模板的區別

普通函式與函式模板區別:

普通函式呼叫時可以發生自動型別轉換

函式模板呼叫時,如果利用自動型別推導,不會發生隱式型別轉換

如果利用顯示指定型別的方式,可以發生隱式型別轉換

1.1.3 普通函式與函式模板的呼叫規則

呼叫規則如下:

如果函式模板和普通函式都可以實現,優先呼叫普通函式

可以通過空模板引數列表來強制呼叫函式模板

函式模板也可以發生過載

如果函式模板可以產生更好的匹配,優先呼叫函式模板

1.2 類模板

作用:建立乙個通用類,類中的成員資料型別可以不具體制定,用乙個虛擬的型別來代表

語法:template

類解釋:

template——宣告建立模板

typename——表示其後面的符號是一種資料型別,可以用class代替

t——通用的資料型別,名稱可以替換,通常為大寫字母

template

<

class

nametype

,class

agetype

>

class

person

nametype m_name;

agetype m_age;};

intmain()

1.2.1 類模板與函式模板的區別

區別主要有兩點:

類模板沒有自動型別推導的方式

類模板在模板引數列表中可以有預設引數

1.2.2 類模板中成員函式建立時機

普通類中的成員函式一開始就可以建立

類模板中的成員函式在呼叫時才建立

1.2.3 類模板物件做函式引數

三種傳入方式:

指定傳入的型別——直接顯示物件的資料型別

引數模板化——將物件中的引數變為模板進行傳遞

整個類模板化——將這個物件型別模板化進行傳遞

1.2.4 類模板與繼承

當子類繼承的父類是乙個類模板時,子類在宣告的時候,要指定出父類中t的型別

如果不指定,編譯器無法給子類分配記憶體

如果想靈活指定出父類中t的型別,子類也需要變為類模板

template

<

class

t>

class

base

;//class son:public base 錯誤, c++編譯器給子類分配記憶體,必須知道父類中t的型別才可以向下繼承

class

son:

public base<

int>

;template

<

classt1,

class

t2>

class

son2

:public base

;int

main()

1.2.5 類模板函式類外實現

類模板中成員函式類外實現時,需要加上模板引數列表

template

<

classt1,

class

t2>

class

person

;template

<

classt1,

class

t2>

person

::person

(t1 name,t2 age)

template

<

classt1,

class

t2>

void person

::showperson()

intmain()

總結:

類模板類外實現時:返回值型別 類名::函式名(){}

1.2.6 類模板與友元

全域性函式類內實現:直接在類內宣告友元

全域性函式類外實現:需要提前讓編譯器知道全域性函式的存在

太複雜

C 基礎學習筆記 類模板

一 類模板 1 類模板作用 語法 template typename t class 類名 解釋 include include using namespace std class person tyname name tyage age intmain 2 類模板與函式模板的區別 1.類模板無法使...

學習筆記08

2017年9月27日 學習筆記與總結 1.定位方式 相對定位 position relative 1 相對於自己原來的位置進行定位 2 如果是僅僅新增了相對定位的樣式,position relative 顯示效果不發生變化 3 使用定位讓元素發生偏移的 可以使用z index來調整顯示順序 最大值為...

C 學習筆記day08

1 排序函式 void order int p1,int p2 sort ia 9,sizeof int orderint for int i 0 i 9 i coutpers 0 id 1 pers 0 age 29 strcpy pers 0 name liucy pers 1 id 2 per...