5 3 2 成員變數的初始化和記憶體中的執行機制

2021-06-29 14:41:38 字數 695 閱讀 8997

class person

person p1=new person();

person p2=new person();

p1.name="孫悟空"

;p2.name="張三"

;p1.eyenum=2

;p2.eyenum=2

;

如果這行**是第一次使用person類,則系統通常會在第一次使用person類時載入這個類,並初始化這個類。

當person類初始化完成後,系統將在堆記憶體中為person類分配一塊記憶體區,在這塊記憶體區里包含了儲存eyenum類變數的記憶體,並設定eyenum的預設初始值:0。

eyenum類變數並不屬於person物件,它是屬於person類的,所以建立第乙個person物件時並不需要為eyenum類變數分配記憶體,系統只是為name例項變數分配了記憶體空間,並指定預設初始值:null。

person物件根本沒有儲存eyenum這個變數,通過p1訪問的eyenum類變數,其實還是person類的eyenum類變數。

不管通過哪個person例項來訪問eyenum類變數,本質其實還是通過person類來訪問eyenum類變數時,它們所訪問的是同一塊記憶體,

因此,當程式需要訪問類變數時,盡量使用類作為主調,而不要使用物件作為主調。

初始化列表成員變數的初始化

對於以下程式 include using namespace std class base base b 0 a b int get a int get b int main 本想得到的結果是a,b都為90。但是實際結果卻是 4273046 90process returned 0 0x0 exec...

class中成員變數的初始化

在類class的定義中,不同定義方式的成員變數的初始化方式各不一樣。對於變數的初始化主要分以下幾種情況 1 普通變數 一般的成員變數的初始化不能在定義是進行初始化的,但此類資料成員是能夠在建構函式中進行初始化的,也能夠在初始化列表中進行初始化。使用建構函式定義方式如下 class test 使用初始...

C 中成員變數的初始化

類成員變數的初始化對於初學者來說是乙個頭疼的問題,總是記不住 型別應該怎樣進行初始化。為了解決後顧之憂,今天就把類中所有型別的成員變數的初始化做乙個總結。首先,我們來看看c 的類中都有哪幾種型別的成員變數。class test 大概的型別就是這幾類,當然還有其他一些比如 int f int g co...