C 函式模板

2022-04-10 13:12:15 字數 709 閱讀 7600

函式模板是通用的函式描述,也就是說,它們使用泛型來定義函式,其中的泛型可用具體的型別(如int或者double)替換。通過將型別作為引數,傳遞給模板,可使編譯器生成該型別的函式。

函式模板允許以任意型別的方式來定義函式。例如,可以這樣建立乙個交換函式的模板:

template void swap(t &a, t &b)

模板並不建立任何函式,而只是告訴編譯器如何定義函式。上面**的關鍵字typename和關鍵字class都是可以的,但是推薦使用關鍵字typename。

要讓編譯器知道程式需要乙個特定形式的交換函式,只需要在程式中使用swap()函式即可。編譯器將檢查所使用的引數型別,並生成相應的函式。

#include template void swap(t &a, t &b);

using namespace std;

int main()

template void swap(t &a, t &b)

函式模板不能縮短可執行程式,如上面的**,最終仍將由兩個獨立的函式定義,並且最終的**並不包含任何的模板,而只包含了程式生成的實際函式。使用模板的好處是,它使生成多個函式定義更簡單、更可靠。

但是:同乙個函式模板,只適用於函式的引數個數相同而型別不同,且函式體相同的情況,如果引數的個數不同,則不能用該函式模板。但是可以過載的函式模板。

c 函式模板

include using namespace std template t max t a,t b,t c int main int main int i1 185,i2 76,i3 567,i double d1 56.63,d2 90.23,d3 3214.78,d long g1 67854...

c 函式模板

關鍵字template總是放在模板的電腦關於與宣告的最前面,關鍵字後面是用逗號分隔的模板參數列,該列表是模板參數列,不能為空。模板引數可以是乙個模板型別引數,它代表了一種型別 也可以是乙個模板非型別引數,它代表了乙個常量表示式。模板型別引數由關鍵字class或typename後加乙個識別符號構成。在...

C 函式模板

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