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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++ const限定符和auto类型说明符

發(fā)布時間:2023/12/20 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ const限定符和auto类型说明符 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

const限定符

# 1.限定常量

有時我們希望定義這樣的變量:它的值不能被改變。為了滿足這一要求,我們使用const對變量的類型加以限定:

const?int?bufSize?=?512;

這樣就把bufSize定義成了一個常量,它的值不能再發(fā)生變化。所以這也就意味著const對象必須要初始化。那么初始化操作對于const對象來說意味著什么呢?如果利用一個對象去初始化另外一個對象,則它們是不是const都無關緊要:

int?i?=?42; const?int?ci?=?i;??//正確 int?j?=?ci;??//正確

這里要注意的是,雖然使用常量ci去初始化j,但是拷貝一個對象的值并不會改變它,一旦完成拷貝,新的對象就和原來的對象沒有什么關系了。

# 2.const對象僅在文件內(nèi)有效

默認情況下,const對象被限定僅在文件內(nèi)有效。當多個文件中出現(xiàn)了同名的const變量時,其實等同于在不同文件中分別定義了獨立的變量。但是,如果需要將const變量在多個文件中實現(xiàn)共享該怎么辦呢?要做到在一個文件中定義const,而在其它多個文件中聲明并且使用它,解決的辦法就是:對于const變量不管是聲明還是定義都添加extern關鍵字,這樣只需要定義一次就夠了。

//第一個文件file1 extern?const?int?bufSize?=?fcn(); //第二個文件file2 extern?const?int?bufSize;??//與file1里面的是同一個

const的引用

對常量的引用不能被用作修改它所綁定的對象:

const?int?ci?=?1024; const?int?&r1?=?ci;??//正確,引用及其對應的對象都是常量 r1?=?42;????//錯誤,r1是對常量的引用 int?&r2?=?ci;????//錯誤,r2是非常量引用,ci是一個常量

我們知道,引用的類型必須與其所引用的對象的類型一致,但是有兩個特殊情況:(1)初始化常量引用時允許用任意表達式作為初始值,只要該表達式的結果能轉(zhuǎn)換成引用的類型即可。

double?dval?=?3.14; const?int?&ri?=?dval;

ri引用了一個int型的數(shù),但是dval確實一個雙精度浮點數(shù),編譯器會將其變成如下形式:

const?int?temp?=?dval; const?int?&ri?=?temp;

(2)對const的引用可能引用一個并非const的對象

int?i?=?42; const?int?&ri?=?i;

這種方式是允許的。

# const與指針

頂層const

頂層const表示指針本身是一個常量,不能改變它的指向。

int?i?=?43; int?*?const?p1?=?&i;

底層const表示指針所指的對象是一個常量。

int?i?=?43; const?int?*?p1?=?&i; int?const?*?p2?=?&i;

# 常量表達式與constexpr

常量表達式指的是值不會改變且在編譯過程中就能得到計算結果的表達式

const?int?max_file?=?20;????//是常量表達式 const?int?limit?=?max_file?+?1????//limit是常量表達式 int?stuff_size?=?10;??????//stuff_size不是常量表達式 const?int?sz?=?getSize();?????//sz不是常量表達式

C++11標準規(guī)定,允許將變量聲明為constexpr類型以便由編譯器來驗證變量的值是否是一個常量表達式。聲明為constexpr的變量一定是一個常量,而且必須用常量表達式初始化:

constexpr?int?mf?=?20;??//??正確 constexpr?int?limit?=?mf?+?1;????//mf+1是常量表達式 constexpr?int?sz?=?size();??????//只有當size()是一個constexpr函數(shù)時才是一條正確的語句

需要注意的是,在constexpr聲明中如果定義了一個指針,限定符constexpr僅針對指針有效,與所指的對象無關。

# auto類型說明符

C++11引入auto類型說明符,它可以讓編譯器通過初始值來推斷變量的類型。顯然,auto定義的變量必須有初始值。但是,auto會忽略掉頂層const,:

const?int?ci?=?i,?&cr?=?ci; auto?b?=?ci;?????//b是一個整數(shù) auto?c?=?cr;????//c是一個整數(shù) auto d =?&i;?//d是一個整型指針 auto e =?&ci;??//e是一個指向整型常量的指針(這是底層const)

但是,有時會遇到一種情況:我想知道這個表達式結果的類型,但是我又不想真的用這個表達式的結果來初始化變量。這個時候就要用到另外一個類型指示符decltype

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

編譯器并不會實際調(diào)用函數(shù)f(),而是使用當調(diào)用發(fā)生時f的返回值類型作為sum的類型。decltype的一個坑:對于decltype所用的表達式來說,如果decltype給變量加上括號,則返回的是引用類型:

int?i?=?42; decltype((i))?d;????//錯誤,d是int&,必須初始化

推薦閱讀:

專輯|Linux文章匯總

專輯|程序人生

專輯|C語言

我的知識小密圈


嵌入式Linux

微信掃描二維碼,關注我的公眾號?

總結

以上是生活随笔為你收集整理的C++ const限定符和auto类型说明符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 手机av网址| 欧美日韩激情在线 | 国产www免费观看 | 夜夜爽天天爽 | 视频二区在线观看 | 野外一级片 | 动漫美女隐私无遮挡 | 夜夜爽网站| 色哟哟导航| 五月婷婷综合色 | 五月婷婷俺也去 | 噜噜色av | 欧美视频在线免费看 | 超碰三级 | 成人免费视 | 国产精品国语自产拍在线观看 | 国产成人精品免费视频 | 亚洲艹 | 亚洲狼人天堂 | 神马久久av | 一区二区麻豆 | 成人看片黄a免费看视频 | 一区二区欧美日韩 | 欧美日韩一卡二卡 | 91久久精 | 欧美少妇一区二区 | 国产亚洲色婷婷久久 | 中文字幕在线观看第一页 | 欧美bbbbbbbbbbbb18av| 无码人妻丰满熟妇区bbbbxxxx | 伊人影院在线观看视频 | 欧美成人不卡视频 | 娇小激情hdxxxx学生 | 欧美高清性xxxxhd | 日韩六十路 | 国产精品午夜久久 | 久久亚洲av午夜福利精品一区 | 国产一区一一区高清不卡 | 在线综合色 | 欲涩漫入口免费网站 | 无码人妻丰满熟妇区毛片蜜桃精品 | 中文字幕精品一区久久久久 | 老司机深夜福利视频 | 午夜伦理在线观看 | 在线观看欧美日韩视频 | 色香天天 | 久久草国产 | 一边摸内裤一边吻胸 | 麻豆av一区二区三区久久 | 色88久久久久高潮综合影院 | 91精品国产日韩91久久久久久 | 亚洲高清视频免费观看 | 91精品在线视频观看 | 国产青青在线 | 亚洲图区欧美 | 日本免费色| 嫩草影院中文字幕 | 日韩电影三级 | 俺也去在线视频 | 四虎最新域名 | 成人免费看片又大又黄 | 日韩一级免费毛片 | 依依综合网 | 重口h文| 日韩伦理一区二区 | 成人视品 | 精品一区二区在线观看视频 | 日韩免费淫片 | 国产91成人 | 九九午夜| 日韩一区二区三区在线播放 | 靠逼动漫 | 台湾av在线 | 337p粉嫩大胆色噜噜狠狠图片 | av天天堂| 在线免费观看日韩视频 | 欧美日韩黄色网 | 黄色高清视频在线观看 | 日日操狠狠操 | av资源网在线 | 鲁鲁狠狠狠7777一区二区 | 黄色在线免费视频 | 国产啊啊啊啊 | 日韩高清精品免费观看 | 国产做爰高潮呻吟视频 | 欧美做爰全过程免费观看 | 香蕉视频网页 | 苍井空浴缸大战猛男120分钟 | 国产一区二区麻豆 | 91麻豆精品国产91久久久更新时间 | 一本久久精品一区二区 | 黄色.com| 久久久久久久久久福利 | 亚洲色大成网站www www.97ai.com | 天码人妻一区二区三区在线看 | 免费操| 在线永久看片免费的视频 | 伊人久久精品视频 | 国产成人精品一区二区三区免费 |