欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

EasyC++函數(shù)模板介紹

 更新時間:2021年12月17日 08:46:03   作者:梁唐  
這篇文章主要介紹了C++函數(shù)模板介紹,所謂函數(shù)的模板,本質(zhì)上也就是使用泛型來定義函數(shù),所謂的泛型其實也就是不定的類型,比如說我們使用vector的時候,可以定義各種類型的vector,下面我們一起進入文章詳細了解一下C++函數(shù)模板,需要的朋友可以參考一下

文章轉自:?公眾號:Coder梁(ID:Coder_LT)

函數(shù)模板:

所謂函數(shù)的模板,本質(zhì)上也就是使用泛型來定義函數(shù)。

所謂的泛型其實也就是不定的類型,比如說我們使用vector的時候,可以定義各種類型的vector,可以定義存儲int型的vector也可以定義存儲float類型的,也可以定義存儲其他類型。我們在聲明的時候將存儲的類型當做參數(shù)傳給了模板。

泛型可以用具體的類型,比如(int或double)替換,通過將類型作為參數(shù)傳給模板,編譯器會根據(jù)傳遞的參數(shù)類型生成該類型的函數(shù)。這種方式也被稱為通用編程或者參數(shù)化類型。

舉一個很簡單的例子,比如說我們要實現(xiàn)一個函數(shù)交換兩個變量的值。對于int類型我們要實現(xiàn)一遍,對于double類型我們又要實現(xiàn)一遍,如果還需要其他類型,那么又需要額外實現(xiàn)很多同樣邏輯的函數(shù)。當然可以拷貝代碼,但顯然這樣會很浪費時間,而且會使得代碼變得臃腫。

這個時候我們就可以使用函數(shù)模板自動完成這一功能,函數(shù)模板允許以任意類型來定義函數(shù),所以我們就可以這樣實現(xiàn):

template <typename T>
void swap(T &a, T &b) {
    T temp = a;
    a = b;
    b = temp;
}


當我們要創(chuàng)建一個模板的時候,需要首先聲明模板的類型,也就是template語句做的事情。關鍵字typename也是必須的,也可以使用class代替。typename關鍵字是在C++98標準添加的,所以在更早的版本中往往使用class。在這個場景下,這兩種方式是等價的。C++ Primer當中更建議使用typename而非class。

typename之后跟的是類型的名稱,我們可以使用任意的名字,一般來說習慣性地會使用字母T。我們在使用的時候和普通函數(shù)并沒有什么不同,當做普通函數(shù)使用即可。

template <typename T>
void swap(T &a, T &b) {
    T temp = a;
    a = b;
    b = temp;
}

int i = 10, j = 20;
swap(i, j);
double a = 3.0, b = 4.0;
swap(a, b);


雖然我們只實現(xiàn)了一次函數(shù),但是在編譯的時候,編譯器會將這個函數(shù)根據(jù)我們使用的情況生成多個版本。比如在上面的代碼當中,我們使用了int和double兩種類型的函數(shù)。編譯器會替我們生成兩份代碼,也就是說最終代碼上和我們手動實現(xiàn)函數(shù)重載是一樣的,可以理解成一種方便我們程序編寫的特性。

到此這篇關于C++函數(shù)模板介紹的文章就介紹到這了,更多相關C++函數(shù)模板內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論