C 函式模板與普通函式

2021-10-04 05:46:03 字數 1239 閱讀 9677

當我們要對不同的資料型別進行同樣的操作的時候,

我們可能要分別編寫幾個函式去對應資料型別進行相似的操作,比如說交換兩個資料

我們使用函式模板就會大大提高效率

示例:

#include

using

namespace std;

template

<

typename t>

//宣告乙個模板,t是乙個通用資料型別

//或template

void

exchanged

(t &a, t &b)

void

example()

intmain()

這裡有兩個注意事項:

在使用函式模板的時候,t的型別必須可知,才可以使用

在使用自動型別推導函式模板的時候,資料型別必須一致。

#include

using

namespace std;

intmyadd

(int a,

int b)

template

<

class

t>

t myadd2

(t a, t b)

intmain()

#include

using

namespace std;

//普通函式

void

myprint

(int a,

int b)

//函式模板

template

<

class

t>

void

myprint

(t a, t b)

//函式模板過載

template

<

class

t>

void

myprint

(t a, t b, t c)

void

example()

intmain()

總結:

優先呼叫普通函式

如果想強制呼叫模板函式,可以使用空引數列表

如果函式模板可以更好匹配使用條件,則優先呼叫函式模板

函式模板也可以進行過載

注意:一般提供了模板函式,就不要再使用同名的普通函式。

C 提高3 普通函式與函式模板

之前說了一些函式模板的應用,這一篇部落格我們來說一下普通的函式和函式模板的區別,以及普通函式與函式模板的呼叫規則。閒話不說直接上乾貨。1.1 普通函式呼叫時可以發生自動型別轉換 隱式型別轉換 首先看第一條,普通函式呼叫時可以發生自動型別轉換 隱式型別轉換 我們先舉乙個例子。include inclu...

普通函式與函式模板的區別

普通函式與函式模板的區別 普通函式呼叫時可以發生自動型別轉換 型別轉換 函式模板呼叫時,如果利用自動型別推導,不會發生隱式型別轉換 如果利用顯示指定型別的方式們可以發生隱式型別轉換 include using namespace std 普通函式與函式模板區別 1.普通函式呼叫可以發生隱式型別轉換 ...

02 C 普通函式,函式模板,類模板

普通函式與函式模板的區別 普通函式呼叫時可以發生自動型別轉換 隱式型別轉換 函式模板呼叫時,如果利用自動型別推導,不會發生隱式型別轉換 如果利用顯示指定型別的方式,可以發生隱式型別轉換 include using namespace std 普通函式與函式模板區別 1.普通函式呼叫時可以發生隱式型別...