當我們要對不同的資料型別進行同樣的操作的時候,
我們可能要分別編寫幾個函式去對應資料型別進行相似的操作,比如說交換兩個資料
我們使用函式模板就會大大提高效率
示例:
#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.普通函式呼叫時可以發生隱式型別...