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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

明显调用的表达式前的括号必须具有指针函数类型_每天三分钟带你搞懂C++基础Day5 处理类型 typedef、auto、decltype...

發布時間:2024/9/27 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 明显调用的表达式前的括号必须具有指针函数类型_每天三分钟带你搞懂C++基础Day5 处理类型 typedef、auto、decltype... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

類型別名(type alias)一個名字,是某種類型的同義詞。使用類型名有很多好處,能讓復雜的類型名字變得簡單明了,易于理解和使用。

有兩種方法可用于定義類型別名。傳統的方法是使用關鍵字typedef :

typedef double wages; //wages是double的同義詞 typedef wages base, *p; //base是double的同義詞, p是double*的同義詞

含有typedef的聲明語句定義的不再是變量而是類型別名。

新標準規定了一種新方法,使用別名聲明(alias declaration)來定義類型的別名:

using SI = Sales_item; //SI是Sales_item的同義詞

用關鍵字using作為別名聲明的開始,其后緊跟別名和等號,是作用是吧等號左側的名字規定成等號右側類型的別名。

類型別名和類型的名字等價,只要是類型的名字能出現的地方,就能使用類型別名:

wages hourly, weekly; //等價于double hourly、weekly; SI item; //等價于Sales_item item

指針、常量和類型別名

如果摸個類型別名指代的是復合類型或常量,那么把它用到聲明語句里就會產生意想不到的后果。

例如類型pstring,它實際上是類型char*的別名:

typedef char *pstring; const pstring cstr = 0; // cstr是指向char的常量指針 const pstring *ps; //ps是一個指針,它的對象時指向char的常量指針

當遇到一條使用了類型別名的聲明語句時,人們往往會錯誤的嘗試把類型別名替換成它本來的樣子,以理解該語句含義:

const char *cstr = 0; //是對const pstring cstr的錯誤理解

再次強調這種理解是錯誤的。聲明語句中用到pstring時,其基本數據類型是指針。可是用char*重寫了聲明語句后,數據類型就變成了char,*成為了聲明符的一部分。這樣改寫的結果是,const char成了基本數據類型。前后兩種聲明含義截然不同,前者聲明了一個指向char的常量指針,改寫后的形式則聲明了一個指向const char的指針。

auto 類型說明符

auto讓編譯器通過初始值來推算變量的類型。顯然,auto定義的變量必須有初始值:

//由val1和val2相加的結果可以推斷出item的類型 auto item = val1+val2; //item初始化為val1和val2相加的結果

使用auto也能在一條語句中聲明多個變量:

auto i = 0, *p = &i; //正確: i是整數、p是整型指針 auto sz = 0, pi = 3.14; //錯誤:sz和pi的類型不一致

復合類型、常量和auto

編譯器一引用對象的類型作為auto的類型:

int i = 0, &r = i; auto a = r; //a是一個整數(r是i的別名,而i是一個整數)

其次,autu一般會忽略掉頂層const,同時底層const則會保留下來,比如當初始值是一個指向常量的指針時:

const int ci = i,&cr = ci; auto b = ci; //b是一個整數(ci的頂層const特性被忽略掉了) auto c = cr; //c是一個整數(cr是ci的別名,ci本身是一個頂層const) auto d = &i; //d是一個整型指(整數的地址就是指向整數的指針) auto e = &ci; //e是一個指向整數常量的指針(對常量對象取地址是一種底層const) ci是整數常量

如果希望推斷出的auto類型是一個頂層const,需要明確指出:

const auto f = ci; //ci的推演類型是int,f是const int

還可以將引用的類型設為auto,此時原來的初始化規則仍然適用:

auto &g = ci; //g是一個整型常量引用,綁定到ci auto &h = 42; //錯誤:不能為非常量引用綁定字面值 const auto &j = 42; //正確:可以為常量引用綁定字面值

要在一條語句中定義多個變量,切記,符號&和*指從屬于某個聲明符,而非基本數據類型的一部分,因此初始值必須是同一類型:

auto k = ci, &l = i; //k是整數,l是整型引用 auto &m = ci, *p = &ci; //m是對整型常量的引用,p是指向整型常量的指針//錯誤: i的類型是int而&ci的類型是const int auto &n = i, *p2 = &ci; //如上所說的類型不符 錯誤

decltype類型指示符

Decltype它的作用是選擇并返回操作數的數據類型。再次過程中,編譯器分析表達式并得到它的類型,卻不實際計算表達式的值:

decltype(f()) sum = x; //sum的類型就是函數f的返回類型

編譯器并不實際調用函數f,而是使用當調用發生時f的返回值類型作為sum的類型。

decltype處理頂層和引用的方式與auto有些許不同。如果decltype使用的表達式是一個變量,則decltype返回該變量的類型(包括頂層和引用在內):

const int ci = 0,&cj = ci; decltype(ci) x = 0; //x的類型是const int decltype(cj) y = x; //y的類型是const int&,y綁定到變量x decltype(cj) z; //錯誤:z是一個引用,必須初始化

需要指出的的是,引用從來都是作為其所指對象的同義詞出現,只有用在decltype處是一個例外。

decltype和引用

如果decltype使用的表達式不是一個變量,則decltype返回表達式結果對應的類型。

有些表達式將向decltype返回一個引用類型。一般來說這一維和表達式的結果對象能作為一個賦值語句的左值:

//decltype的結果可以使引用類型 int i = 42, *p = &i, &r = i; decltype(r + 0) b; //正確:加法的結果是int,因此不是一個未初始化的int decltype(*p) c; //錯誤:c是int&,必須初始化

因為r是一個引用,因此decltype(r)的結果是引用類型。而r+0顯然結果將是一個具體值而非一個引用。

//decltype的表達式如果是加上了括號的變量,結果將是引用 decltype((i)) d; //錯誤:d是int&,必須初始化 因為加了(), 把它當成表達式 decltype(i) e; //正確:e是一個int

切記:decltype((variable))(注意是雙層括號)的結果永遠是引用,而decltype(variable)結果只有當variable本身就是引用時才是引用。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的明显调用的表达式前的括号必须具有指针函数类型_每天三分钟带你搞懂C++基础Day5 处理类型 typedef、auto、decltype...的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产精品96久久久久久 | 日本不卡一区在线 | 69精品人妻一区二区三区 | 性感美女毛片 | 草在线视频 | 亚洲精品一区二区三区四区 | 网址在线观看你懂的 | 中文字幕免费在线视频 | v片在线免费观看 | 亚洲综合在线五月 | 99久久精品国产一区二区成人 | 成年人视频在线播放 | 欧美视频在线播放 | 色香蕉网 | 男操女视频免费 | 黄色片视频免费在线观看 | 国产一级片免费观看 | 在线五月天 | 日本婷婷 | 欧美日韩在线综合 | 欧美日韩在线视频免费播放 | 亚洲色图狠狠干 | 国产专区一区二区 | 少妇性l交大片7724com | 人妻丰满熟妇岳av无码区hd | 色八戒av| 蜜桃av噜噜一区二区三区小说 | 欧美激情国产日韩精品一区18 | 欧美性猛交xxxx黑人交 | 免费看的黄色小视频 | 骚色综合| aaa黄色片| 日韩一区二区精品视频 | 国产人人爽 | 黄色网免费 | 日本中文字幕免费观看 | 美女试爆场恐怖电影在线观看 | 一区二区在线播放视频 | 涩涩涩涩涩涩涩涩涩 | 手机在线一区 | 美女在线观看视频 | 国产在线拍| 国产一区资源 | 欧美中文字幕一区二区三区 | 日韩久久在线 | 国产精品1 | 中国免费毛片 | 精品欧美在线 | 日韩成人激情 | 看日本黄色录像 | 亚洲午夜一区二区三区 | 免费久久视频 | 丁香啪啪综合成人亚洲 | www狠狠操| 99涩涩 | 国产夫妻性爱视频 | 亚洲超碰在线 | 天天操综合网 | 少妇诱惑av| 国产精品熟女久久久久久 | 91亚洲精品在线 | 亚洲最大黄色网址 | 亚洲日本护士毛茸茸 | 亚洲欧洲一区二区三区 | 色爽爽爽爽爽爽爽爽 | 可以免费看av的网址 | 99re在线观看视频 | 天天操夜夜操狠狠操 | 人妻少妇无码精品视频区 | 国产一区二区在线观看视频 | 波多野结衣黄色片 | 欧美裸体精品 | 韩国三级在线视频 | 韩国在线不卡 | 午夜精品久久久久久久久久久久久蜜桃 | 伊人黄网| 在线免费观看黄色 | 日本丰满少妇裸体自慰 | 超鹏在线视频 | 亚洲天堂av在线免费观看 | 久久不卡免费视频 | 黄色在线观看视频 | 中文字幕色哟哟 | 国产成人午夜 | 日韩欧美不卡在线 | 国产搞逼视频 | 国产一区二区三区电影在线观看 | www.97av| 日韩av一卡 | 一本一道久久a久久精品蜜桃 | 久久成人毛片 | 成人福利av | 日韩欧美黄色网址 | 好吊妞这里只有精品 | 大度亲吻原声视频在线观看 | 插我一区二区在线观看 | 日韩激情在线 | 国产久视频 | 扩阴视频 |