亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

四、C++11新特性:追蹤返回類型

tianyu / 1270人閱讀

摘要:四追蹤返回類型宋體聲明該筆記是在學(xué)習(xí)深入理解高級編程程序庫探秘時做的總結(jié),方便以后鞏固復(fù)習(xí)引入追蹤返回類型的目的宋體追蹤返回類型配合與會真正釋放中泛型編程的能力簡化函數(shù)的定義,提高代碼的可讀性。

四、追蹤返回類型

聲明:該筆記是在學(xué)習(xí)《深入理解C++11》、《C++11/14高級編程 Boost程序庫探秘》時做的總結(jié),方便以后鞏固復(fù)習(xí)!

1、引入追蹤返回類型的目的:

追蹤返回類型配合autodecltype會真正釋放C++11中泛型編程的能力;簡化函數(shù)的定義,提高代碼的可讀性。

使用decltype對返回類型進行類型推導(dǎo)書寫方式如下:

template<typename T1, typename T2>decltype(t1 + t2) Sum(T1 & t1, T2 & t2) { 	return t1 + t2;}

這樣的寫法雖然看似不錯,不過對編譯器來說有些小問題。編譯器在推導(dǎo)decltype(t1 + t2)時的,表達
式中的t1t2都未聲明;而變量使用前必須已經(jīng)聲明。

為了解決變量使用前必須已經(jīng)聲明這個問題,C++11引入了新語法——追蹤返回類型,來聲明和定義這樣的函數(shù)

template<typename T1, typename T2>auto Sum(T1 & t1, T2 & t2) -> decltype(t1 + t2){	return t1 + t2;}

把函數(shù)的返回值移至參數(shù)聲明之后,復(fù)合符號-> decltype(t1 + t2)被稱為追蹤返回類型。而原本函數(shù)返回值的位置由auto關(guān)鍵字占據(jù)。這樣,我們就可以讓編譯器來推導(dǎo)Sum函數(shù)模板的返回類型了。而auto占位符->return_type也就是構(gòu)成追蹤返回類型函數(shù)的兩個基本元素。

2、使用追蹤返回類型的函數(shù)

參數(shù)的類型和返回值都可在實例化時再確定

#include using namespace std;template<typename T1, typename T2>auto Sum(const T1 & t1, const T2 & t2) -> decltype(t1 + t2){	return t1 + t2;}template <typename T1, typename T2>auto Mul(const T1 & t1, const T2 & t2) -> decltype(t1 * t2){	return t1 * t2;}int main(){	auto a = 3;    auto b = 4L;    auto pi = 3.14;    auto c = Sum(a, b);    cout << "d = " << c << endl;       auto d = Mul(c, pi);    cout << "d = " << d << endl;   }        

輸出:

d = 7d = 21.98

定義了兩個模板函數(shù)Sum和Mul,它們的參數(shù)的類型和返回值都在實例化時決定。而由于main函數(shù)中還使用了auto,整個例子中沒有看到一個“具體”的類型聲明。
auto 會追蹤 decltype() 推導(dǎo)出的類型。

可以關(guān)注公眾號:Kevin的嵌入式學(xué)習(xí)站,整理不易,但您的點贊、關(guān)注、收藏就是對我最大的鼓勵!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/123612.html

相關(guān)文章

  • 追蹤解析 ThreadPoolExecutor 源碼

    摘要:的前位數(shù)用來表示線程的數(shù)量,后面三位用來表示線程池的狀態(tài)。線程池的狀態(tài)有五種,分別是,根據(jù)單詞就能猜出大概。并且為了考慮性能問題,線程池的設(shè)計沒有使用悲觀鎖關(guān)鍵字,而是大量使用了和機制。 零 前期準備 0 FBI WARNING 文章異常啰嗦且繞彎。 1 版本 JDK 版本 : OpenJDK 11.0.1 IDE : idea 2018.3 2 ThreadPoolExecutor ...

    gaomysion 評論0 收藏0
  • 追蹤解析 FutureTask 源碼

    摘要:零前期準備文章異常啰嗦且繞彎。版本版本簡介是中默認的實現(xiàn)類,常與結(jié)合進行多線程并發(fā)操作。所以方法的主體其實就是去喚醒被阻塞的線程。本文僅為個人的學(xué)習(xí)筆記,可能存在錯誤或者表述不清的地方,有緣補充 零 前期準備 0 FBI WARNING 文章異常啰嗦且繞彎。 1 版本 JDK 版本 : OpenJDK 11.0.1 IDE : idea 2018.3 2 ThreadLocal 簡介 ...

    xcc3641 評論0 收藏0
  • Spring Cloud 參考文檔(Spring Cloud Sleuth介紹)

    摘要:那個配置文件將來自應(yīng)用程序的信息以格式記錄到文件中。以下清單顯示了使用的集成測試設(shè)置代碼添加到項目本節(jié)介紹如何使用或?qū)⑻砑拥巾椖恐?。以下示例顯示了如何為執(zhí)行此操作建議你通過添加依賴關(guān)系管理,這樣你就無需自行管理版本。 Spring Cloud Sleuth介紹 Spring Cloud Sleuth為Spring Cloud實現(xiàn)了分布式追蹤解決方案。 術(shù)語 Spring Cloud S...

    impig33 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<