C 模板過載

2021-10-09 11:56:05 字數 1149 閱讀 9147

產生背景:需要多個對不同型別使用同一種演算法函式時可以使用模板,但是並非所有的型別都使用同一種演算法,為了解決這個問題,產生了模板過載。

tips:

1.如同函式的過載一樣,模板過載函式的特徵標必須不同

2.並非所有的模板引數都必須是模板引數型別

顯示具體化(explicit specialization):提供乙個具體化函式定義

基於(iso/ansi c++標準)

c++98標準選擇的方法:

1.對於給定的函式名,可以有非模板函式、模板函式和顯示具體化模板函式以及它們的過載版本

2.顯示具體化的原型和定義應template<>打頭,並通過名稱來制定型別

3.具體化優先於常規模板,而非模板函式優先於具體化和常規模板

結合**示例理解

#include

using

namespace std;

template

<

typename t>

void

swap

(t &a,t &b)

;struct job

;template

<

>

void swap

(job &j1,job &j2)

;void

show

(job &j)

;int

main()

; job sidney =

; cout <<

;show

(sue)

;show

(sidney)

;swap

(sue,sidney)

; cout <<

;show

(sue)

;show

(sidney)

;return0;

}template

<

typename t>

void

swap

(t &a,t &b)

template

<

>

void swap

(job &j1,job &j2)

void

show

(job &j)

c 基礎 過載,模板

一 過載1.函式過載 1 不同引數型別,不同引數個數可以過載 例如下面的不能過載 void fun int 和 void fun int 2 不能用函式返回值過載 2.運算子過載 1 編譯器根據參加運算的運算元的型別來識別不同的運算 2 過載運算子就是編寫乙個運算子函式,該函式原形是 返回值的資料型...

C 函式模板的過載

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

過載模板函式

include using namespace std 求兩個int值的最大值 inline int const max int const a,int const b 求兩個任意型別值中的最大者 template inline t const max t const a,t const b int...