C 學習筆記11

2021-09-25 23:21:35 字數 2396 閱讀 5015

本質上來說,模板就是將型別引數化以解決強型別語言的嚴格性和靈活性的衝突。當然這一問題的解決還有兩種方法,分別為帶引數巨集定義和過載函式。

其中普通函式與函式模板可以過載,而且函式模板之間也可以過載。模板一般不進行分檔案編寫,可就在標頭檔案中實現,標頭檔案字尾為.hpp。

模板可分為函式模板和類模板,通過模板例項化構造出具體的函式和類稱為模板函式和模板類。

普通函式優先於模板函式的執行。

模板形參的設定

模板的例項化

可變模板引數

可變模板引數是c++11新增的最強大特性之一,它對引數進行了高度泛化,能表示任意個引數。

引數包①模板引數包 templateclass tuple,args被稱為模板引數包,表示可以接收任意多個引數作為模板引數,編譯器將多個模板引數打包成單個模板引數包

②函式引數包 templatevoid func(t…args);args稱為函式引數包,表示該函式可以接收多個任意型別的引數

c++11要求引數包必須唯一,且為最後乙個引數;當宣告乙個變數為可變引數時,省略號在該變數的左邊;當使用引數包時,省略號位於引數包的左側,表示立即展開該可變引數,此過程也被稱為解包

模板實現佇列

#pragma once

#include

using namespace std;

template

class queue

;template

queue::

queue

(int n)

:_arr

(new t[n+1]

()),

_size

(n+1),

_front(0

),_rear(0

)template

queue::

~queue()

template

bool queue::

isempty()

template

bool queue::

isfull()

template

void queue::

push

(t n)

}template

void queue::

pop()}

template

void queue::

print()

else

}template

t queue::

getfront()

template

t queue::

getrear()

#include

"template_queue.hpp"

void

test0()

//測試整形

void

test1()

//測試字元型

void

test2()

//測試string型別

intmain

(int argc,

char

*ar**)

模板實現單例模式
#pragma once

#include

#include

using namespace std;

//建立單例物件實現乙個模板形式的單例類,

//要求對於任意型別的類經過singleton的處理之後,

//都能獲取乙個單例物件,並且可以傳遞任意引數

template

class singleton;~

singleton()

;public:

template..args>

//傳遞任意個引數

static t *

getinstance

(args.

..args)

static

void

destory()

};template

t * singleton

::_pinstance = nullptr;

class point

;point

(int x,

int y =22)

:_ix

(x),

_iy(y)

~point()

void

print()

};class computer

~computer()

void

print()

};#include

"template_single_class.hpp"

void

test()

intmain

(int argc,

char

*ar**)

C 學習筆記11

11.集合1.泛型集合所在命名空間 system.collection.qeneric 2.非泛型集合所在命名空間 system.collection 3.常用介面 1 enumerator 只要實現了該介面的類就支援foreach遍歷 2 icollection 實現了該介面,就能夠訪問count...

c 11學習筆記

c 98的 std auto ptr已經被徹底遺棄了,取而代之的是unique ptr shared ptr與weak ptr。大部分時候我們自己手動申請記憶體方式記憶體都是沒有問題的,問題是如果程式很大了之後,乙個複雜的物件,多次拷貝的代價非常高,很多地方都會使用到,只存在乙份拷貝顯然是最好的,這...

C 11學習筆記 Type Support

其實主要還是對c 的std庫的學習吧,雖然用的不少但是對c 的全貌還不太了解。主要包括3個部分 基本型別 rtti 萃取技術 traits size t 用的太多了,不說了。ptrdiff t 乙個有符號的型別,通常用來表示兩個指標相減的結果,是乙個機器相關的型別。和size t不同的是,size ...