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...