【C++深度剖析教程36】深入理解函数模板
生活随笔
收集整理的這篇文章主要介紹了
【C++深度剖析教程36】深入理解函数模板
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
加qq1126137994 微信:liu1126137994 一起學習更多技術!!!
1、函數模板深入理解
*對模板進行編譯
*對參數替換后的函數進行編譯
注意事項:
函數模板本身不允許隱式類型轉換
- 調用函數自動推倒類型時必須嚴格匹配類型
- 顯示類型指定時,能夠進行隱式類型轉換
函數模板可以定義任意多個不同類型的參數
對于多參數模板
*無法自動推倒函數的返回值類型
*可以從左向右部分指定類型參數
工程中將返回值參數作為第一個類型參數
#include <iostream> #include <string>using namespace std;template < typename T1, typename T2, typename T3 > T1 Add(T2 a, T3 b) {return static_cast<T1>(a + b); }int main() {// T1 = int, T2 = double, T3 = doubleint r1 = Add<int>(0.5, 0.8);// T1 = double, T2 = float, T3 = doubledouble r2 = Add<double, float>(0.5, 0.8);// T1 = float, T2 = float, T3 = floatfloat r3 = Add<float, float, float>(0.5, 0.8);cout << "r1 = " << r1 << endl; // r1 = 1cout << "r2 = " << r2 << endl; // r2 = 1.3cout << "r3 = " << r3 << endl; // r3 = 1.3return 0; }2、函數重載與函數模板
當函數重載遇上函數模板會發生什么?
函數模板可以像普通函數一樣被重載:
- C++編譯器優先考慮普通函數
- 如果函數模板可以產生一個更好的匹配,則優先使用函數模板
- 可以通過空模板實參列表,來限制編譯器只匹配模板
3、總結
總結
以上是生活随笔為你收集整理的【C++深度剖析教程36】深入理解函数模板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python对excel操作简书_Pyt
- 下一篇: SpringBoot项目对接短信平台De