const聲明的變量能修改嗎 const和define的區(qū)別?
const和define的區(qū)別?define宏定義和const常變量區(qū)別:是宏定義,程序在預處理階段將用define定義的內(nèi)容并且了替換。所以程序運行時,常量表中并沒有用define定義的常量,系統(tǒng)不
const和define的區(qū)別?
define宏定義和const常變量區(qū)別:
是宏定義,程序在預處理階段將用define定義的內(nèi)容并且了替換。
所以程序運行時,常量表中并沒有用define定義的常量,系統(tǒng)不為它分配內(nèi)存。const定義的常量,在程序正常運行時在常量表中,系統(tǒng)為它分配內(nèi)存。
定義的常量,預處理時只是因為就通過了替換。所以才編譯程序時肯定不能參與數(shù)據(jù)類型檢驗。const定義的常量,在編譯時進行不是很嚴的類型檢驗,也可以以免出錯。
定義方法表達式時要再注意“邊緣效應(yīng)”,例如如下定義:#defineN23//我們想像的N值是5,我們這樣使用NintaN/2//我們想象之外的a的值是2.5,可實際上a的值是3.5
c const定義的變量可以改變嗎?
不是的,在對象生存期內(nèi)是不可以哦決定的,過了生存期那是大多數(shù)變量了。
在C中,const成員變量也沒法在類定義處重新初始化,不能是從構(gòu)造函數(shù)重新初始化列表參與,因此要有構(gòu)造函數(shù)。
const數(shù)據(jù)成員只在某個對象生存期內(nèi)是常量,而這對整個類而言卻是幾何渦輪的。畢竟類可以創(chuàng)建多個對象,相同的對象其const數(shù)據(jù)成員的值是可以不同。因此不能在類的聲明中系統(tǒng)初始化const數(shù)據(jù)成員,畢竟類的對象沒被創(chuàng)建戰(zhàn)隊時,編譯器到底const數(shù)據(jù)成員的值是什么。
const數(shù)據(jù)成員的初始化只能在類的構(gòu)造函數(shù)的初始化列表中進行。要想建立起在整個類中都恒定的常量,肯定用類中的枚舉常量來實現(xiàn),的或staticcosnt。
classTest
{
welfare:
Test():a(0){}
enum {size1100,size2200}private:
constinta//只能在構(gòu)造函數(shù)初始化設(shè)置列表中初始化
staticintb//在類的利用文件中定義方法并初始化操作
conststaticintc//與staticconstintc同一。
}
intTest::b0//static成員變量不能在構(gòu)造函數(shù)重新初始化列表中初始化操作,因為它屬于什么某個對象。
cosntintTest::c0//注意一點:給動態(tài)和靜態(tài)成員變量變量時,不是需要加static修飾符。但要加cosnt