const。(但可以偷梁換柱進行更新)
限定m不可變。替換基本形式中的m為1式中的*p1,替換後const char *p1;限定*p1不可變,當然p1是可變的,因此問題中p1++是對的。替換基本形式中的type為2式中的pStr,替換後const pStr m;限定m不可變,題中的pStr就是一種新類型,因此問題中p2不可[1]變,p2++是錯誤的。
,至於const放在類型前還是類型後並沒有區別。如:const int a和int const a都是修飾a為const。一個簡單的判斷方法:指針運算符*,是從右到左,那麼如:char const * pContent,可以理解為char const (* pContent),即* pContent為const,而pContent則是可變的。
int const * p1,p2;
int const * const p1,p2;
int * const p1,p2;
printf_s("%s\n", bptr);
}
const 關鍵字的成員函數指定,一個常數成員函數不能修改任何非靜態數據成員或調用不是常數的任何成員函數。const關鍵字,把const關鍵字放在函數的參數表和函數體之間。聲明和定義中均要求該 const 關鍵字。
{
return month; // Doesn't modify anything
}
void Date::setMonth( int mn )
{
month = mn; // Modifies data member
}
int main()
{
Date MyDate( 7, 4, 1998 );
BirthDate.getMonth(); // Okay
}
.
構造函數和析構函數對這個規則例外,它們從不定義為常量成員,但可被常量對象調用(被自動調用)。
"2"傳給它的構造函數參數。
。下面通過一個例子來說明這個問題:
<http://baike.baidu.com/view/1065598.htm?force=1>