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

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

請(qǐng)問(wèn)為什么在類中用const修飾函數(shù)void displayFrac()

請(qǐng)問(wèn)為什么在類中用const修飾函數(shù)void displayFrac()

眼眸繁星 2021-12-31 15:11:13
void fraction::displayFrac() const{ cout<<num<<'/'<<denom;}類名為fraction
查看完整描述

2 回答

?
至尊寶的傳說(shuō)

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

你的函數(shù)中沒(méi)有出現(xiàn)對(duì)成員變量的修改,應(yīng)該是沒(méi)有問(wèn)題的(除非你的num和denom沒(méi)定義,一一!)。
原因如下:
c++語(yǔ)言之所以靈活度高,那是因?yàn)閏+編譯器背著程序員做很多事情。比如這里的const。當(dāng)一個(gè)函數(shù)被用作成員函數(shù)時(shí),其實(shí)有一個(gè)隱式的this指針存在。成員函數(shù)會(huì)被編譯器改變?yōu)橐话愕娜趾瘮?shù),同時(shí)添加一個(gè)參數(shù),即該類的指針。
比如你的函數(shù)
void fraction::displayFrac() const
{
cout<<num<<'/'<<denom;
}
會(huì)被變?yōu)椋?br/>void displayFrac(fraction* this) const //所以說(shuō)成員函數(shù)和全局函數(shù)實(shí)質(zhì)上是一致的。
{
//注意多了this
cout<<this->num<<'/'<<this->denom;//這里我假設(shè)num和denom是類fraction的成員變量,而不是全局變量。
}
現(xiàn)在分析你的問(wèn)題:根據(jù)c++語(yǔ)法,當(dāng)const修飾成員函數(shù)時(shí),傳入的this指針變?yōu)橹赶虺?shù)的指針。由于this指針是指向你的對(duì)象(比如你的調(diào)用代碼為frac.displayFrac(),那么this指向?qū)ο骹rac),故而在函數(shù)內(nèi)不能通過(guò)this指針改變frac的值(即不能改變frac的數(shù)據(jù)成員)。

這里還涉及到常量指針和指針常量等問(wèn)題。如果不明白多翻翻語(yǔ)法書。反正記住一旦成員函數(shù)的函數(shù)體被const修飾,那么在該函數(shù)內(nèi)就不能改變類的數(shù)據(jù)成員,但是其他的改變(非類成員的賦值等)沒(méi)問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2022-01-03
?
白衣染霜花

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

這種語(yǔ)法表示該函數(shù)不會(huì)修改類成員變量

查看完整回答
反對(duì) 回復(fù) 2022-01-03
  • 2 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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