C 程式設計思想 模板

2021-10-21 11:59:24 字數 2807 閱讀 7879

模板將型別以乙個識別符號替代,想要使用模板就需要遵守模板對這個識別符號的要求,比如對識別符號有什麼成員變數以及成員函式。

#include

#include

using

namespace

::std;

//*****************這是乙個模板類的實現,展示模板的特性之一:約定性*******************************

template

<

class

t>

classx}

;classy}

;};/

*int

main()

*/

//********************************這是乙個模板型別的模板引數案例****************************

template

<

classt,

template

<

class

>

class

seq>

//t是乙個型別,seq是乙個模板型別,這個模板型別有乙個引數(無需寫出引數名)

class

container

void

push_back

(t t)};

template

<

class

t>

class

vec size_t size()

};/*

intmain()

*/

//***********************成員函式中的模板:分為函式成員模板和類成員模板*********************************

template

<

class

t>

class

comtemplate

<

class

u>

com(

const com

& u):t

(u.t)

//成員函式模板};

在例項化模板時,優先考慮特化程度高的模板,比如有指標修飾符修飾的模板或者直接特化的模板,若特化程度高的模板可以匹配就使用特化程度高的模板,當然匹配度是更重要的指標。

//*****************模板特化以及模板過載************************************

#include

template

<

class

stacktype

>

void

emptythestack

(stacktype& stk)

template

<

class

stacktype

>

void

emptythestack

(stack

>

& stk)

//經過指標特化的模板,當例項化為引數為指標時優先呼叫此模板

template

<

>

void

emptythestack

(float

& stk)

//直接float 型別,顯示特化

void

emptythestack

(int stk)

//過載模板函式

如果符號定義涉及到未確定型別,在編譯的第一階段只會在已經定義的符號表中查詢該符號,不會到不確定型別中查詢該符號。

//********************************關聯不確定型別識別符號的編譯*************************

#include

#include

using std::cout;

using std::endl;

voidg(

)//全域性定義

template

<

class

t>

class

yyvoidh(

)typedef

int e;

//區域性定義};

typedef

double e;

//全域性定義

//乙個全域性定義的模板函式

c 程式設計思想

c和c 指標的最重要的區別在於 c 是一種型別要求更強的語言。就void 而言,這一點表現得更加突出。c雖然不允許隨便地把乙個型別的指標指派給另乙個型別,但允許通過void 來實現。例如 bird b rock r void v v r b v c 不允許這樣做,其編譯器將會給出乙個出錯資訊。如果真...

C 程式設計思想1

學了好久的 c 了 發現自己對於c c 還是沒有深入的了解 於是 咬咬牙啃起了 c 程式設計思想 希望能有所感悟 我以前是直接學c 的對於c不是很了解,然而又是在vc下 學習 所以 沒有好好的 去學習 標準c 直到我 看起c 程式設計思想 我發現真應該從頭再學一遍了 1 定義的宣告的區別 宣告是 宣...

C 程式設計思想 2nd卷一 模板簡介

標頭檔案 模板定義很特殊。在template 之後的任何東西都意味著編譯器在當時不為它分配儲存空間,而是一直處於等待狀態直到被乙個模板示例告知。在編譯器和聯結器中有機制能去掉同一模板的多重定義。所以為了使用方便,幾乎總是在標頭檔案中放置全部的模板宣告和定義。當建立乙個巢狀friend類的時候,必須經...