需要多個對不用型別使用同一種演算法的函式時,可使用模板。如上篇程式所示鏈結。然而,並非所有的型別都使用相同的演算法。為滿足這種需求,可以像過載常規函式定義那樣過載模板定義。和常規過載一樣,被過載的模板的函式特徵標必須不同。例如,下面的程式新增了乙個交換模板,用於交換兩個陣列中的元素。原來的模板的特徵標為(t &, t&),而新模板的特徵標為(t [ ], t [ ], int)。注意,在後乙個模板中,最後乙個引數的型別為具體型別(int),而不是泛型。並非所有的模板引數都必須是模板引數型別。
編譯器見到程式中第乙個swap()函式呼叫時,發現它有兩個int函式,因此將它與原來的模板匹配。但第二次呼叫將兩個int陣列和乙個int值用作引數,這與新模板匹配。
#includeusing namespace std;
templatevoid swap(t &a, t &b);
templatevoid swap(t *a, t*b, int n);
void show(int a);
const int lim = 8;
int main()
; int d2[lim] = ;
cout << "original arrays:\n";
show(d1);
show(d2);
swap(d1, d2, lim);
show(d1);
show(d2);
return 0;
}templatevoid swap(t &a, t &b)
templatevoid swap(t a, t b, int n)
}void show(int a)
template函式模板
模板 templates 使得我們可以生成通用的函式,這些函式能夠接受任意資料型別的引數,可返回任意型別的值,而不需要對所有可能的資料型別進行函式過載。這在一定程度上實現了巨集 macro 的作用。它們的原型定義可以是下面兩種中的任何乙個 template function declaration ...
template函式模板
模板 templates 使得我們可以生成通用的函式,這些函式能夠接受任意資料型別的引數,可返回任意型別的值,而不需要對所有可能的資料型別進行函式過載。這在一定程度上實現了巨集 macro 的作用。它們的原型定義可以是下面兩種中的任何乙個 template function declaration ...
swap函式 template 函式模板
template是c 裡面的關鍵字 還是接著上次的swap函式入手 一叉樹 從c語言到c zhuanlan.zhihu.com 現在想交換的是兩個int變數和兩個double變數 using namespace std int main void swap2 double a,double b 這兩...