C 普通函式與函式模板 區別以及呼叫規則01

2021-10-02 03:21:26 字數 720 閱讀 4224

//普通函式 和 函式模板 區別

int myplus(int a, int b)

templatet myplus2(t a, t b)

void test01()

//普通函式 和 函式模板 呼叫規則

templatevoid myprint(t a, t b)

/*//假設傳入t是int型別 ,生成乙個 下面的函式,這個函式 稱為 模板函式

void myprint(int a, int b)

*/templatevoid myprint(t a, t b , t c)

void myprint(int a, int b)

void test02()

int main()

普通函式和函式模板的區別以及呼叫規則

1.1 區別:

a. 普通函式可以隱式型別轉換

b. 函式模板如果是自動型別推導的使用方式, 是不可以發生隱式型別轉換

如果函式模板在呼叫的時候顯示的指定了t的型別,是可以發生隱式型別轉換的。 比如 functemplate(a, b);

1.2 呼叫規則:

a. 如果函式模板和普通函式都可以實現呼叫, 那麼優先呼叫的是普通函式

b. 可以通過空引數列表語法來強制呼叫 函式模板

c. 函式模板也可以發生函式過載

d. 如果函式模板可以產生更好的匹配, 優先使用的是函式模板

C 函式模板與普通函式

當我們要對不同的資料型別進行同樣的操作的時候,我們可能要分別編寫幾個函式去對應資料型別進行相似的操作,比如說交換兩個資料 我們使用函式模板就會大大提高效率 示例 include using namespace std template typename t 宣告乙個模板,t是乙個通用資料型別 或te...

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

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

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

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