第56課 函式模板的概念和意義

2021-08-15 00:15:40 字數 2114 閱讀 8406

1.1、巨集**塊 vs 函式

/**************           變數的交換        *************/

#include

#include

using namespace std;

//巨集定義**塊

#define swap(t, a, b)\

do                  \

while(0)           //這裡不加這個分號; 可能是保證乙個整體,保證當做一條語句處理。

/*for(...) swap(...);   考慮一下這種情況

*/

//定義函式方式

void swap(int& a, int& b)//引用就是常量指標

void swap(double& a, double& b)//引用就是常量指標

void swap(string& a, string& b)//引用就是常量指標

int main()

1.2、優缺點比較

總結:泛型的程式設計就是為了解決**復用的問題,並且進行型別檢查。

2.1、

不考慮具體資料型別

的程式設計,集合了上述兩種方案的優點。

2.2、

函式模板:c++中的泛型

2.2.1、

一種特殊的函式

可用不同型別

進行呼叫

2.2.2、

看起來和普通函式很相似,區別是

型別可被引數化

,如 template

void swap(

t

& a,

t

& b)

2.3、

函式模板的語法規則

2.3.1、

template

關鍵字用於宣告

開始進行泛型程式設計

2.3.2、

typename

關鍵字用於宣告

泛指型別

3.1、

自動型別推導

呼叫 int a = 0, b = 1;

swap(a, b);    //自動推導

3.2、具體型別顯示呼叫

float  c = 2, d = 3;

swap(c, d);        //顯示呼叫

/************************   函式模板使用初探   ****************/

#include

#include

using namespace std;

template //在函式前宣告

void swap(t& a, t&b)

template

void selectsort(t a, int len)

} }

}template

void println(t a, int len)

cout << endl; }

int main() ;

println(a, 5);

selectsort(a, 5);

println(a, 5);

string s[5] = ;

println(s, 5);

selectsort(s, 5);

println(s, 5);

return 0; }

4.1、

函式模板是泛型程式設計在c++中的應用方式之一

4.2、

函式模板能夠根據

實參對引數型別

進行推導

4.3、

函式模板支援

顯式的指定引數型別

4.4、

函式模板是c++中重要的**復用方式

每一項技術都是為了解決乙個特定的問題

56 函式模板的概念和意義

1 發散性的問題 c 中有幾種交換變數的方法?答 兩種,定義巨集 塊 vs 定義函式 define swap t,a,b void swap int a,int b 定義巨集 塊 和 定義函式都能交換變數。但是對於巨集 塊,是由預處理器處理,編譯器不知道巨集 塊的存在。定義函式的話一次只能實現一種型...

函式模板的概念和意義

發散性問題 c 中有幾種交換變數的方法?定義巨集 塊 vs 定義函式 程式設計實驗 include include using namespace std define swap t,a,b do while 0 int main 利用定義巨集 塊的方法看上去很完美,但是巨集是預處理器處理的程式單元...

第58課 類模板的概念和意義

1.1 一些類主要用於 儲存和組織 資料元素 1.2 類中資料組織的方式和資料元素的 具體型別無關 如陣列類 鍊錶類 stack類 queue類等。1.3 c 中將模板的思想應用於類,使得 類的實現 不關注資料元素的具體型別 而只關注類所需要 實現的功能。2.1 以相同的方式 處理不同的型別 2.2...