最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

C++ constexpr auto 類型別名

2023-03-17 22:32 作者:S-a-i_  | 我要投稿

常量表達(dá)式(const expression)是指值不會(huì)改變且在編譯過程就能得到結(jié)果的表達(dá)式。用常量表達(dá)式初始化的const對(duì)象也是常量表達(dá)式。

盡管sz是一個(gè)常量,但是他的值在具體運(yùn)行時(shí)才能得到,所以不是常量表達(dá)式。


constexpr變量

在一個(gè)復(fù)雜系統(tǒng)中我們基本很難確定一個(gè)初始值到底是不是常量表達(dá)式,c++11新標(biāo)準(zhǔn)規(guī)定(指的c++ primer第五版的標(biāo)準(zhǔn))允許將變量聲明為constexpr類型以便由編譯器來驗(yàn)證變量是否是一個(gè)常數(shù)表達(dá)式。聲明為constexpr的變量一定是一個(gè)常量,而且必須用常量表達(dá)式初始化。

盡管不能使用普通函數(shù)作為constexpr變量的初始值,但是后面我們將介紹一種新標(biāo)準(zhǔn)允許定義一種特殊的constexpr函數(shù)。


字面值類型

常量值表達(dá)式的值需要在編譯時(shí)就得到計(jì)算,因此對(duì)聲明constexpr就有所限制,我們將他稱為“字面值類型”

到目前為止算術(shù)類型、引用和指針都屬于字面值類型。自定義的類不屬于字面值類型,也就不能被定義為constexpr,在比較后面我們還會(huì)介紹一些字面值類型。

盡管指針和引用都能定義為constexpr,但是他們的初始值都受到嚴(yán)格的限制,一個(gè)constexpr指針的初始值必須是nullptr或者0,或者是儲(chǔ)存某個(gè)固定地址中的對(duì)象。

后面我們會(huì)提到,函數(shù)體內(nèi)定義變量一般來說并非存放在固定地址中,因此constexpr指針不能指向這樣的變量,相反函數(shù)體之外的對(duì)象地址固定不變,因此可以用來初始化constexpr指針。往后我們還將詳細(xì)講述允許函數(shù)定義一類有效范圍超出函數(shù)本身的變量,這類變量、也有固定地址。


指針和constexpr

如果constexpr定義了一個(gè)指針,那么constexpr只對(duì)指針有效。

這里q和p相差甚遠(yuǎn),關(guān)鍵字constexpr把他所定義的對(duì)象置為了頂層const。

與其他常量指針類似,constexpr指針既可以指向常量也可以指向非常量。


類型別名

類型別名可以讓復(fù)雜的名稱變得簡單。有兩種定義類型別名的方法。

1關(guān)鍵字typedef

2新標(biāo)準(zhǔn)定了一種新方法,使用別名聲明來定義。

using關(guān)鍵字將左側(cè)的名字規(guī)定成右側(cè)類型的別名。


指針、常量和類型別名

如果某個(gè)類型別名指代的是復(fù)合類型或常量,那么將他用到聲明語句就會(huì)產(chǎn)生意想不到的后果。

const是對(duì)給定類型的修飾,pstring實(shí)際上是指向char的指針,因此const pstring就是指向char的常量指針,而非指向常量字符的指針。

注意:聲明語句中用到pstring時(shí),其基本數(shù)據(jù)類型時(shí)指針,可是改寫成char*后,數(shù)據(jù)類型就變成了char,*成了聲明符的一部分,這樣const char就成了基本數(shù)據(jù)類型。所以pstring時(shí)一個(gè)指向char的常量指針,而const char*就是一個(gè)指向const char的指針。


auto類型說明符

auto類型能讓編譯器替我們?nèi)ヅ袛啾磉_(dá)式屬于的類型,因此auto必須有初始值。

auto一條聲明語句只能有一個(gè)類型

復(fù)合類型、常量和auto

auto一般會(huì)忽略頂層const,同時(shí)保留底層const

如果希望auto推斷出頂層const,需要明確指明

設(shè)置一個(gè)auto的引用時(shí),初始值中的頂層const依舊保留。

要在一條語句中定義多個(gè)變量,&和*只從屬于某個(gè)聲明符而非基本類型的一部分,因此初始值必須時(shí)同一類型

(確實(shí)難定,有點(diǎn)遭不住了

C++ constexpr auto 類型別名的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
新竹市| 正宁县| 武义县| 苏尼特左旗| 博野县| 泗洪县| 鹤峰县| 雷波县| 临泽县| 靖远县| 山阳县| 乌鲁木齐市| 泊头市| 汉川市| 卢氏县| 清丰县| 五大连池市| 洪雅县| 梧州市| 东明县| 溧水县| 灵丘县| 顺义区| 南溪县| 普兰县| 浦县| 凉城县| 民勤县| 锡林浩特市| 广灵县| 宁津县| 延边| 日照市| 日土县| 禄丰县| 涟水县| 桃江县| 印江| 个旧市| 格尔木市| 大荔县|