在建立完成抽象操作的函式時,如:拷貝,反轉和排序,你必須定義多個版本以便能處理每一種資料型別。
以比較兩個數的大小為例:
#includeusing namespace std;
int max(int a, int b)
double max(double a, double b)
int main()
例如:templatet max(t a, t b)
int main()
int main()
int main()
max(1,2.1)例項化中的兩個資料的型別不同,第乙個資料是int型,第二個資料是double型,直接呼叫,模板不能根據需要生成相應的函式
所以通過例項化max(1,2.1>將double型別的資料轉換成int型,就可以成功執行了。
輸出的結果是0,與原來比較兩個字串是否相等的結果不一致;對於傳入的是char*型別的,而模板只是簡單的簡單的
比較了傳入引數的值,即兩個指標是否相等,因此這裡列印0。顯然,這與我們的初衷不符,所以就需要對其進行例項化。
對模板函式進行特化如下:
template <>
bool isequal(const char* t1, const char* t2) //函式模板特化
1、關鍵字template後面接一對空的尖括號<>
2、函式名後接模板名和一對尖括號,尖括號中指定這個特化定義的模板形參
3、函式形參表
4、函式體
template<>
返回值 函式名(引數列表)
模板 泛型程式設計
我們從乙個很簡單的問題來進入泛型程式設計 question 如何寫乙個通用的加法函式 使用函式過載。針對每乙個所需相同行為的不同型別重新實現 函式過載的缺點 1 只要有 型別出現,就要重新新增對應函式 2 除型別外,所有函式的函式體都相同,的復用率不高 3 如果函式知識返回值型別不同,函式過載不能解...
泛型程式設計 模板
泛型程式設計 重點 1.熟悉模板的語法 2.模板的原理 3.理解 基礎語法 類和物件 模板 去解決c語言不足的問題和意義 使用模板,編寫跟型別無關的 例如在一些函式和類的時候,針對不同型別需要寫很多重複的 swap函式 類 比如我們想實現乙個資料結構棧stack,stack的多個物件,st1存int...
模板與泛型程式設計
模板是泛型變成的基礎。泛型程式設計 編譯與型別無關的 是一種復用的方式,模板分為模板函式和模板類。模板函式是乙個通用的函式模板,而不是為每一種型別定義乙個新函式,乙個函式模板就像乙個公式,針對不同型別函式生成不同的函式版本。關鍵字 template 以 template 開始,後面跟乙個模板引數列表...