3 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
void p(int x ,int y) const,i未在函數(shù)體內(nèi)定義,也不是參數(shù),所以很明顯你這屬于類(lèi)成員函數(shù)中const的使用 即限制函數(shù)類(lèi)型,就是形如:void fun() const; 此類(lèi)的將const放在函數(shù)體后。 這個(gè)時(shí)候const的含義是無(wú)法修改數(shù)據(jù)成員。例如有個(gè)私有成員area,而我們需要使用,可以定義函數(shù)void getarea();這個(gè)時(shí)候在函數(shù)后面加上const,就是void getarea() const;是很好的選擇,防止你不小心改變了area的值。
總的來(lái)說(shuō) 如果一個(gè)成員函數(shù)的不會(huì)修改數(shù)據(jù)成員,那么最好將其聲明為const,因?yàn)閏onst成員函數(shù)中不允許對(duì)數(shù)據(jù)成員進(jìn)行修改,如果修改,編譯器將報(bào)錯(cuò),這大 大提高了程序的健壯性。
你這里i=x明顯試圖改變i的值,當(dāng)然報(bào)錯(cuò)了!
所以說(shuō)定義const成員函數(shù)往往是不錯(cuò)的選擇。因?yàn)槲覀兌x的類(lèi)的成員函數(shù)中,常常有一些成員函數(shù)不改變類(lèi)的數(shù)據(jù)成員,也就是說(shuō),這些函數(shù)是"只讀"函數(shù),而有一些函數(shù)要修改類(lèi)數(shù)據(jù)成員的值。如果把不改變數(shù)據(jù)成員的函數(shù)都加上const關(guān)鍵字進(jìn)行標(biāo)識(shí),顯然,可提高程序的可讀性。其實(shí),它還能提高程序的可靠性,已定義成const的成員函數(shù),一旦企圖修改數(shù)據(jù)成員的值,則編譯器按錯(cuò)誤處理。

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
函數(shù)帶const,說(shuō)明這個(gè)函數(shù)是常成員函數(shù),即是一個(gè)“只讀”函數(shù),在函數(shù)體中不能直接或間接的更改數(shù)據(jù)成員的值,即自己不能更改,同時(shí)也不能調(diào)用那些能引起數(shù)據(jù)成員值變化的成員函數(shù),只能調(diào)用const成員函數(shù)。i是不是數(shù)據(jù)成員啊。

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
const修飾函數(shù)
除函數(shù)內(nèi)部變量,包括形參以及內(nèi)部定義變量外,其他變量都無(wú)法修改值
- 3 回答
- 0 關(guān)注
- 654 瀏覽
添加回答
舉報(bào)