色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++ decltype和返回類型后置使用方法

冬至子 ? 來源:iDoitnow ? 作者:艱默 ? 2023-07-18 15:37 ? 次閱讀

1. decltype

decltype的使用方式如下:

decltype(expression) var;

關鍵字decltype的作用是將變量的類型聲明為表達式指定的類型。即將var的類型聲明為expression指定的類型。編譯器在處理decltype的時候,實際上需要對expression進行一個核對,然后才能確定var的類型。其流程和核對規則大致如下:

  • 1)如果expression是一個沒有用括號括起來的標識符,則var的類型與該標識符的類型相同 。例如:
double x = 1.0;
double y = 2.0;
double &lx = x; 
const double *pd;

decltype(x) m;      //m的類型為double
decltype(lx) n = y; //n的類型為double &
decltype(pd) u;     //u的類型為const double *
  • 2) :如果expression的條件不符合1), expression是一個函數的調用,則var的類型與函數的返回值類型相同。 例如:
int sum(int a, int b){...}

decltype(sum(1,2)) m; //m的類型為int
  • 3) :如果expression的條件不滿足1)、2), expression是一個左值,則var指向該左值類型的引用。 例如:
double xx = 1.0;

decltype( (xx) ) rx = xx; //rx的類型是double &
decltype(xx) m = xx; //m的類型是double,因為雖然xx是左值,但該類型的確定在步驟1)就已經確認了,所以走不到步驟3)

:括號并不能改變表達式的值和左值性。】

  • 4)如果expression的條件不滿足1)、2)、3),則expression的類型就是var的類型。 例如:
int a = 1;
int &b = a;
int &c = a;

decltype(a+1) a1; //a1的類型為int
decltype(100L) aa;//aa的類型為long
decltype(b+c) bc; //bc的類型為int,雖然b和c都是引用,但b+c不是引用,而是兩個int的和,因此bc的類型也為int

2. 返回類型后置

C++11新增加了一種函數聲明的語法:在函數名和參數后面指定返回類型。該語法與auto搭配使用,其使用形式如下所示:

auto fun(int a, int b) - > int

該語法主要是為了解決某些模板函數返回值類型問題,例如下面這個模板函數:

template< typename T, typename U >
??? fun(T t, U u)
{
    ...
    return t + u;
}

該模板函數的返回值如何確定呢?首先很容易想到的是將decltype(t+u)設置為該模板函數的返回值,但是不行的是,此時還未聲明xy,編譯器還識別不到他們,更無法使用他們,因此,C++11新增了返回值類型后置的這種語法,針對上述的模板函數,使用新增的語法可以寫為:

template< typename T, typename U >
auto fun(T t, U u) - > decltype(t + u) //此時decltype在參數t和u聲明的后面,可以正常使用他們
{
    ...
    return t+u;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C++語言
    +關注

    關注

    0

    文章

    147

    瀏覽量

    6989
  • gcc編譯器
    +關注

    關注

    0

    文章

    78

    瀏覽量

    3381
收藏 人收藏

    評論

    相關推薦

    C++打印類型名稱的分析與實現

    打印類型名稱,聽起來像是一個很簡單的需求,但在目前的C++當中,并非易事。
    發表于 10-20 14:08 ?1396次閱讀

    STM32 C++串口類

    使用方法:1. 添加cpp文件到c++工程中2.實例化一個串口對象SerialPort1serial;3.測試:serial
    發表于 01-30 22:19

    C++標準庫學習筆記重點

    in each C++versionvector;//OK since C++113.以auto聲明的變量,其類型會根據初值被自動推導出來。auto i=42;//i has type intvector
    發表于 10-23 20:28

    學習C++方法以及C++的就業方向

    學習方向:嵌入式+人工智能嵌入式是一門技術學習目標1.嵌入式開發概述;(面向對象在嵌入式開發中角色)2.嵌入式Linux C++編程;(C++概述、C++學習方法
    發表于 12-24 07:32

    C++教程第三章數據類型

    C++教程第三章數據類型 什么是數據類型一定的數據在計算機的內部表示;該數據所表示的值的集合;在該數據上的一系列操作。
    發表于 05-15 17:56 ?48次下載

    turbo c 2.0使用說明,使用方法,使用指南

    turbo c 2.0使用說明,使用方法 在開始看本文以前,我先說明一下C語言的安裝和使用中最應該注意的地方:許多網友在下載Turbo C 2.0和Turbo
    發表于 09-18 09:51 ?3321次閱讀

    C++內存泄漏分析方法

    C++是一種非常流行的計算機編程語言,在使用的過程中容易出現內存泄漏問題,而該問題往往難以識別。給出了一種對C++內存泄漏問題進行分析的方法,該方法得到
    發表于 11-23 11:19 ?5次下載
    <b class='flag-5'>C++</b>內存泄漏分析<b class='flag-5'>方法</b>

    VISUAL C++教程之VISUAL C++的安裝和使用方法

    本文檔的主要內容詳細介紹的是VISUAL C++教程之VISUAL C++的安裝和使用方法資料免費下載。
    發表于 12-27 16:32 ?19次下載
    VISUAL <b class='flag-5'>C++</b>教程之VISUAL <b class='flag-5'>C++</b>的安裝和<b class='flag-5'>使用方法</b>

    Visual C++教程之C++的語言資料概述免費下載

    本文檔詳細介紹的是Visual C++教程之C++的語言資料概述免費下載主要內容包括了:1 從CC++的程序結構 ,2 程序書寫規范,3 數據類型
    發表于 02-15 15:59 ?3次下載
    Visual <b class='flag-5'>C++</b>教程之<b class='flag-5'>C++</b>的語言資料概述免費下載

    oracle-C#使用方法

    oracle-C#使用方法(電源技術指標包括電源效率)-該文檔為oracle-C#使用方法講解文檔,是一份還算不錯的參考文檔,感興趣的可以下載看看
    發表于 09-28 09:38 ?6次下載
    oracle-<b class='flag-5'>C</b>#<b class='flag-5'>使用方法</b>

    現代C++之模板類型推導

    傳統C++中,參數的類型都必須明確定義,這其實對我們快速進行編碼沒有任何幫助,尤其是當我們面對一大堆復雜的模板類型時,必須明確的指出變量的類型才能進行后續的編碼,這不僅拖慢我們的開發效
    的頭像 發表于 03-02 16:18 ?878次閱讀

    C++學習筆記之c++的基本認識

    自這篇文章我們即將開始C++的奇幻之旅,其內容主要是讀C++ Primer的總結和筆記,有興趣可以找原版書看看,對于學習C++還是有很大幫助的。這篇文章將從一個經典的程序開始介紹C++
    的頭像 發表于 03-17 13:57 ?730次閱讀

    C++的引用和指針

    之前的文章我們已經介紹了C++中的基本類型如int,bool和double等,除了基本類型C++還有一些更復雜的數據類型復合
    的頭像 發表于 03-17 14:00 ?632次閱讀

    C++中實現類似instanceof的方法

    函數,可實際上C++中沒有。但是別著急,其實C++中有兩種簡單的方法可以實現類似Java中的instanceof的功能。 在 C++ 中,確定對象的
    的頭像 發表于 07-18 10:16 ?575次閱讀
    <b class='flag-5'>C++</b>中實現類似instanceof的<b class='flag-5'>方法</b>

    同樣是函數,在CC++中有什么區別

    同樣是函數,在 CC++ 中有什么區別? 第一個返回值。 C語言的函數可以不寫返回類型
    的頭像 發表于 11-29 10:25 ?283次閱讀
    主站蜘蛛池模板: 老师的快感电影完整版| 狼好色有你好看| 巨胸美乳中文在线观看| 亚洲国产精品无码中文字满| 中国拍三a级的明星女| xxxjapanese丰满奶水| 国产精品永久免费| 久久天天躁狠狠躁夜夜躁| 日韩精品久久久久影院| 亚洲精品自在在线观看| japanesen女同| 国产综合自拍 偷拍在线| 欧美大jiji| 亚洲 视频 在线 国产 精品| 99精品国产高清自在线看超| 国产午夜AV无码无片久久96| 欧美黑人经典片免费观看| 亚洲伊人网站| 高傲教师麻麻被同学调教123| 久久热r在线视频精品| 一个人高清在线观看日本免费| 大香伊人久久精品一区二区| 久久久久久电影| 小骚妇BBBXXX| qvod在线电影| 青青伊人网| 诱咪视频免费| 国产视频成人| 亚洲精品天堂在线观看| 精品手机在线1卡二卡3卡四卡| 色老汉网址导航| gogo免费在线观看| 欧美亚洲国产专区在线| 2022国产精品不卡a| 国产伊人久久| 天美传媒MV高清免费看| 99久久免费国产精品特黄| 欧美亚洲精品午夜福利AV| 成人国产在线观看| 美女裸露100%奶头视频| 亚洲中文在线偷拍|