C 模板程式設計與泛型程式設計之函式模板(一)

2021-10-07 08:35:40 字數 2166 閱讀 2500

int sub(int tv1, int tv2)

float sub(float tv1, float tv2)

//template template t sub(t tv1, t tv2)

//呼叫

int subv = sub(3, 5);

int subv = sub(6.3, 5.9);

型別模板引數t(代表是乙個型別)以前前面的修飾符typename/class都用<>括起來t這個名字可以換成任意其他識別符號,對程式沒有 影響。用t只是一種程式設計習慣。如果對上述模板採用如下呼叫

執行dumpbin  /all   ***.obj   >   ***.txt

注意到

string a("abc"), b("def");

string addresult = sub(a, b);

template t sub(t tv1, t tv2)

double subv = sub(double(3), 5.9);
double subv = sub(3, 5.9);
template v add(t tv1, u tv2)

//呼叫

cout << add(15, 17.8) << endl;

cout
cout << add(15, 17.8) << endl
template < typename v,typename t, typename u>

v add(t tv1, u tv2)

cout << add(15, 17.8) << endl;

template auto add(t tv1, u tv2) //auto用於表達推導返回值型別的含義。

cout << add(15, 17.8) << endl

template auto add(t tv1, u tv2) -> decltype(tv1 + tv2) 

template t mydouble(t tmpvalue)

cout << mydouble(15) << endl; //可以推斷出t型別是int
int result2 = mydouble(16.9)  //32

auto result3 = _nmsp1::mydouble<>(16.9);  

cout << result3 << endl;

double mydouble(double tmpvalue)

auto result4 = mydouble(16.9);

auto result3 = mydouble<>(16.9);

C 泛型程式設計之函式模板

模板是泛型程式設計的基礎,包括函式模板和類模板兩類 其作用是建立乙個通用函式,該函式的返回值和形參型別不具體而用乙個虛擬型別代表,達到簡化的目的 語法templatet 為通用資料型別 如要實現兩數交換的函式 int型別的寫法如 void swapint int a,int b 而如果要交換doub...

C 泛型程式設計之函式模板

泛型程式設計是c 的另一種程式設計思想,主要用到技術是模板。c 提供兩種模板機制 函式模板和類模板 一 函式模板 語法 template函式宣告或定義解釋 template 宣告建立模板 typename 表面其後面的符號是一種資料型別,可以用class代替 t 通用的資料型別,名稱可以替換,通常為...

C 泛型程式設計之函式模板案例

案例描述 利用函式模板封裝乙個排序函式,可以對不同資料型別的陣列進行排序。排序規則是從大到小,排序演算法為選擇排序 分別用char和int陣列進行測試 include iostream include using namespace std 實現通用 對陣列進行排序 規則 從大到小 演算法 選擇排序...