第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

函數(shù)聲明結(jié)尾的“const”是什么意思?

函數(shù)聲明結(jié)尾的“const”是什么意思?

C++
繁華開滿天機(jī) 2019-08-23 10:56:35
函數(shù)聲明結(jié)尾的“const”是什么意思?我有一本書,里面寫著:class Foo {public:     int Bar(int random_arg) const     {         // code     }};這是什么意思?
查看完整描述

3 回答

?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊

const在函數(shù)聲明之后用關(guān)鍵字表示的“const函數(shù)” 使得此類函數(shù)的編譯器錯(cuò)誤更改了類的成員變量。但是,在函數(shù)內(nèi)部讀取類變量是可以的,但是在函數(shù)內(nèi)部寫入會(huì)產(chǎn)生編譯器錯(cuò)誤。

考慮這種“const函數(shù)”的另一種方法是將類函數(shù)視為采用隱式this指針的普通函數(shù)。所以一個(gè)方法int Foo::Bar(int random_arg)(最后沒有const)會(huì)產(chǎn)生一個(gè)類似的函數(shù)int Foo_Bar(Foo* this, int random_arg),并且調(diào)用Foo f; f.Bar(4)會(huì)在內(nèi)部對(duì)應(yīng)類似的東西Foo f; Foo_Bar(&f, 4)?,F(xiàn)在,在end(int Foo::Bar(int random_arg) const)處添加const 可以理解為帶有const this指針的聲明:int Foo_Bar(const Foo* this, int random_arg)。由于this在這種情況下的類型是const,因此不可能修改成員變量。

可以放寬不允許函數(shù)寫入類的任何變量的“const函數(shù)”限制。為了允許某些變量可寫,即使函數(shù)被標(biāo)記為“const函數(shù)”,這些類變量也會(huì)用關(guān)鍵字標(biāo)記mutable。因此,如果一個(gè)類變量被標(biāo)記為可變,并且“const函數(shù)”寫入該變量,那么代碼將干凈地編譯并且變量可以更改。(C ++ 11)

像往常一樣,在處理const關(guān)鍵字時(shí),在C ++語句中更改const關(guān)鍵字的位置具有完全不同的含義。上述用法const僅適用于在const括號(hào)后添加到函數(shù)聲明的末尾時(shí)。

const在C ++中是一個(gè)高度過度使用的限定符:語法和順序通常與指針結(jié)合使用并不簡(jiǎn)單。一些關(guān)于const正確性和const關(guān)鍵字的讀數(shù):

Const正確性

C ++'const'宣言:為什么和如何


查看完整回答
反對(duì) 回復(fù) 2019-08-23
?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

考慮兩個(gè)類類型變量:


class Boo { ... };


Boo b0;       // mutable object

const Boo b1; // non-mutable object

現(xiàn)在,您可以調(diào)用on的任何成員函數(shù),但只能調(diào)用成員函數(shù)。Boob0constb1


查看完整回答
反對(duì) 回復(fù) 2019-08-23
  • 3 回答
  • 0 關(guān)注
  • 848 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)