函式模板template 過載的模板

2021-07-26 08:47:33 字數 861 閱讀 8872

需要多個對不用型別使用同一種演算法的函式時,可使用模板。如上篇程式所示鏈結。然而,並非所有的型別都使用相同的演算法。為滿足這種需求,可以像過載常規函式定義那樣過載模板定義。和常規過載一樣,被過載的模板的函式特徵標必須不同。例如,下面的程式新增了乙個交換模板,用於交換兩個陣列中的元素。原來的模板的特徵標為(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 這兩...