C 函式模板的過載

2021-10-24 08:40:53 字數 565 閱讀 8216

當需要對不同的型別使用同一種演算法(同乙個函式體)時,為了避免定義多個功能重複的函式,可以使用模板。然而,並非所有的型別都使用同一種演算法,有些特定的型別需要單獨處理,為了滿足這種需求,c++ 允許對函式模板進行過載,程式設計師可以像過載常規函式那樣過載模板定義。

在《c++函式模板》一節中我們定義了 swap() 函式用來交換兩個變數的值,一種方案是使用指標,另外一種方案是使用引用,請看下面的**:

//方案①:使用指標

templatevoid swap(t *a, t *b)

//方案②:使用引用

templatevoid swap(t &a, t &b)

這兩種方案都可以交換 int、float、char、bool 等基本型別變數的值,但是卻不能交換兩個陣列。

對於方案①,呼叫函式時傳入的是陣列指標,或者說是指向第 0 個元素的指標,這樣交換的僅僅是陣列的第 0 個元素,而不是整個陣列。陣列和指標本來是不等價的,只是當函式的形參為指標時,傳遞的陣列也會隱式地轉換為指標,這在《c語言入門教程》中的《陣列和指標絕不等價,陣列是另外一種型別》《

C 筆記函式過載函式模板

include using namespace std class student void display 定義公用函式display 在函式的後面加上不加 結果都是一樣的一句話的結束符號 不影響函式的執行在c 中也允許函式的過載,即函式的一物多。include include using nam...

C 函式過載和函式模板

過載 不同的東西在不同場合有不同的含義,一物多用 例如 和 可以是移位運算子,在c 也是輸入輸出運算子 cout 和cin 函式過載 同名函式實現不同功能。函式過載實現方式 引數型別和引數個數至少乙個不同即可。優點 函式過載將相同或類似功能的函式用乙個函式名,但仍然要定義每個函式,於是函式模板派上用...

函式模板template 過載的模板

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