C++中的static 和 const

static和const作用在非類內部的時候,和c語言中是一樣的。static可以修飾全局變量、局部變量和函數,都表示範圍的限定;const表示只讀的意思,不可修改。另外在嵌入式編程中還有volatile關鍵字,它表示易變,容易被硬件改變(中斷或者IO變化等等),它是可以和const一起修飾變量的,易變只讀,硬件可以改,用戶不能改,表示變量可能會被硬件修改,編譯器不要優化它,每次取值都從內存地址來取,而用戶卻不能改變它。

當作用在類內部的時候,就有區別了,首先static作用在類成員上時候,這個成員可以獨立於類的實例而存在,直接通過類型名稱來引用,不需要創建實例;而const則表示要保護類實例的成員不被改變。因此static和const不能夠同時修飾類成員函數,因此一個表示此函數獨立於類實例而存在,另一個表示類實例數據不可改變,語義上不在同意頻道;而針對成員變量則可以同時使用static和const,如果類成員只有static修飾,則它需要在類外部進行初始化,如果加上const則可以在類內部定義的時候初始化,並不矛盾。

另外被static修飾的成員函數也只能訪問static成員變量,而不能訪問普通成員變量,因爲函數存在的時可能類實例都還沒有,怎麼訪問呢?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章