c 的函式模板和類模板

2022-08-02 02:21:12 字數 1285 閱讀 4432

函式模板和普通函式區別結論:

函式模板不允許自動型別轉化

普通函式能夠進行自動型別轉換

函式模板和普通函式在一起,呼叫規則:

1 函式模板可以像普通函式一樣被過載

2 c++編譯器優先考慮普通函式

3 如果函式模板可以產生乙個更好的匹配,那麼選擇模板

4 可以通過空模板實參列表的語法限定編譯器只通過模板匹配

templatevoid

func(t x)

template

t func(t x, t y)

int func(int x, int

y)void func(int

x)int

main()

函式模板機制結論

編譯器並不是把函式模板處理成能夠處理任意類的函式

編譯器從函式模板通過具體型別產生不同的函式

編譯器會對函式模板進行兩次編譯

在宣告的地方對模板**本身進行編譯;在呼叫的地方對引數替換後的**進行編譯。

二、類模板

繼承中的類模板語法

子類從模板類繼承的時候,

需要讓編譯器知道 父類的資料型別具體是什麼

(資料型別的本質

:固定大小記憶體塊的別名

)如:class b : public a

用類模板定義物件時用以下形式:

類模板名<

實際型別名

>

物件名;

類模板名<

實際型別名

>

物件名(

實參表列

);如:

comparecmp;

comparecmp(3,7);

1.從類模板例項化的每個模板類有自己的類模板資料成員,該模板類的所有物件共享乙個static

資料成員

2.和非模板類的static

資料成員一樣,模板類的

static

資料成員也應該在檔案範圍定義和初始化

3.每個模板類有自己的類模板的static

資料成員副本

所有容器提供的都是值(value)語意,而非引用(reference)語意。容器執行插入元素的操作時,內部實施拷貝動作。所以stl容器內儲存的元素必須能夠被拷貝(必須提供拷貝建構函式)。

C 函式模板和類模板

一 函式模板 c 提供了函式模板 function template 所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會...

函式模板和類模板(C )

所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。函式模板和普通函式的區別 函式模板不允許自動型別轉化,普通函式能夠進行自動型別轉換 函式模板和普通函式在一起呼叫的規則 1 函式模板可以像普通函式一樣被過載 2 c 編譯器優先...

C 函式模板和類模板

一 函式模板 1.概念 實際是建立乙個模型,然後根據這個模板去例項化一些物件,它的函式型別和形參型別不具體指定,用乙個虛擬的型別來代表,這個通用的函式就稱為函式模板,只要是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需要在模板中定義一次,在呼叫函式時,編譯器會根據實參的型別對函式進行...