3 回答

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

TA貢獻1875條經(jīng)驗 獲得超5個贊
函數(shù)帶const,說明這個函數(shù)是常成員函數(shù),即是一個“只讀”函數(shù),在函數(shù)體中不能直接或間接的更改數(shù)據(jù)成員的值,即自己不能更改,同時也不能調用那些能引起數(shù)據(jù)成員值變化的成員函數(shù),只能調用const成員函數(shù)。i是不是數(shù)據(jù)成員啊。
- 3 回答
- 0 關注
- 673 瀏覽
添加回答
舉報