五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

C++(5.5) const 和 static 成員

2023-04-05 16:23 作者:咸魚暄  | 我要投稿

關(guān)于這條視頻里

?
19:22
?

處在 Compiler Explorer 跑代碼翻車的解釋:

具體問題是,這段代碼能編譯通過,雖然 Foo::a 沒有被定義:

原因是,當(dāng)時(shí)編譯選項(xiàng)里有一個(gè) -O1,因此編譯器會(huì)做一些優(yōu)化。而在代碼里,我們使用 Foo::a 的唯一地方是 main 里用它初始化了 x;但是由于 x 后續(xù)沒有被使用,因此編譯器把 x 的定義優(yōu)化掉了,所以 Foo::a 就沒有被使用了,因此沒有報(bào)錯(cuò)。

具體來說,目前 C++ 編譯分為 9 個(gè)步驟,大概可以理解為 1~6 完成詞法分析,7~8 完成語法、語義分析和代碼生成,9 完成鏈接。我們期望的「找不到定義」的錯(cuò)誤是鏈接錯(cuò)誤,發(fā)生在第 9 階段;但由于在 7~8 階段中編譯器把 int x = Foo::a; 已經(jīng)優(yōu)化沒了,所以程序中沒有對(duì) Foo::a 的訪問了,因此沒有發(fā)生鏈接錯(cuò)誤。

如果用不會(huì)被優(yōu)化掉的方式訪問 Foo::a,我們就能看到預(yù)期的鏈接錯(cuò)誤:

上課的時(shí)候沒有看出來這個(gè)問題,抱歉QWQQQ

C++(5.5) const 和 static 成員的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
晋江市| 甘德县| 工布江达县| 大埔区| 唐山市| 山西省| 舒兰市| 阜城县| 秦安县| 呼图壁县| 同德县| 元谋县| 合江县| 高要市| 青田县| 丰县| 肃北| 秦安县| 佳木斯市| 新竹县| 武隆县| 鄄城县| 故城县| 祁门县| 宽甸| 应城市| 昌平区| 廉江市| 山西省| 海门市| 类乌齐县| 南靖县| 拜城县| 新郑市| 石泉县| 绍兴市| 易门县| 乐山市| 靖州| 台东市| 绥滨县|