const

1、通常使用編程

一、const是一種經常使用的 類型修飾符。   const TYPE ValueName = value; (TYPE const ValueName = value;兩者功能同樣)  代表TYPE類型的變量ValueName的值永遠是value,再也不改變。   TYPE能夠是int double float char string等,也能夠是自定義的類。函數

二、修飾函數形參,如 void fun( const int& iVal );  避免在函數體內意外修改了iVal的值。實參是否爲const無所謂。(void fun( const int iVal ); 不是好的編程習慣)指針

2、指針內存

一、char cname = 'd';    char* const chpt = &cname;  char型指針chpt永遠指向cname的地址,不能再指向別的地方,可是chpt指向的內存中的內容能夠經過(*chpt)的方式來改變[1]。必須初始化。   ([1]必須知足。假如把char cname = 'd';改爲const char cname = 'd';編譯器會報錯,由於違背了[1]條款)編譯器

二、const char* chpt; ( char const * chpt;兩者功能相同 )  char型指針chpt能夠隨便指向,可是chpt指向的內存中的內容不能夠經過(*chpt)來改變[2]。 能夠不初始化。條款[2]說明以下string

char ch1 = 's';  const char ch2 = 'w';  const char* chpt;  chpt = &ch2;  chpt = &ch1;   ch1 = 'g';  都正確。 可是*chpt = 't';是錯誤的。編譯

三、const char ch = 'd'; (或者char ch = 'd';)  const char* const chpt = &ch;  char型指針chpt永遠指向ch的地址,不能再指向別的地方,而且chpt指向的內存中的內容不能夠經過(*chpt)來改變。必須初始化。class

3、const 成員變量變量

class Student{ const double ChengJi; };構造函數

在類中聲明時與普通成員變量相同,可是必須在構造函數中初始化(此知識點見下一篇博文)。此時不可使用默認構造函數,由於默認構造函數沒有對const成員變量初始化,會出現編譯錯誤「沒有合適的默認構造函數可用」。

4、

相關文章
相關標籤/搜索