日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【第十六章】模板实参推断

發布時間:2023/11/30 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【第十六章】模板实参推断 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二、模板顯式推斷

在C++中,若函數模板返回類型需要用戶指定,那么在定義函數模板時,模板參數的順序是很重要的,如下代碼:

template <typename T1, typename T2, typename T3> //模板一 T1 sum(T2 a, T3 b) {return a + b; }

在調用的時候就需要指定T1的類型,如:sum<float>(1,2);于是sum函數的返回類型為float。但是有時候由于設計者的糟糕設計,會導致一些問題:

template <typename T1, typename T2, typename T3> //模板二 T3 sum(T1 a, T2 b) {return a + b; }

那么再進行上述調用,則會出現問題:sum<float>(1, 2);現在這個調用里指定T1類型為float,但是實際傳進來的是1(int類型),會進行隱式類型轉換,將1轉換為float;T2的類型也可以根據sum(1,2)調用的第二個實參推斷出來,這里是可能會是int。那么T3是什么類型呢?顯然這里編譯器無法推斷T3的類型,需要在調用時指定才能推斷:

sum<int, int, int>(1, 2); //這樣T3就推斷出來是int。

在指定顯示模板實參時指定的類型是和模板參數匹配的,順序是一一對應的,如:

  • 使用sum<int>(1, 2)對上面的第一個模板進行調用,那么T1對應int,T2和T3則通過推斷得出。
  • 使用sum<int>(1, 2)對上面的第二個模板進行調用,那么T1對應的類型是int,T2可以根據實際穿進去的參數進行推斷,這里2為int那么T2類型就是int,那么編譯器就無法知道T3的實際類型了。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【第十六章】模板实参推断的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。