物件與物件引用的區別

2021-08-21 14:01:52 字數 1203 閱讀 2529

一、前言

為了接下來進行更好的分析,我先建立乙個demo類,用於後面的分析。

public

class demo

}

demo demo=new demo();
這條語句,其實包括了四個動作:

1)右邊的「new demo」,是以demo類為模板,在堆空間裡建立乙個demo物件。

2)末尾的()意味著,在物件建立後,立即呼叫demo類的建構函式,對剛生成的物件進行初始化。

3)左邊的「demo demo」建立了乙個demo類引用變數,它存放在棧空間中。也就是用來指向demo物件的物件引用。

4)「=」操作符使物件引用指向剛建立的那個demo物件。

當然這條語句我們也可以寫成:

demo demo;//建立物件引用

demo=/*將物件引用指向物件*/

new demo();//建立物件

這樣顯得更加清晰了。

三、物件引用與物件之間的關係

1)從物件引用出發:

// 乙個物件引用可以指向乙個物件     

demo demo;//乙個物件引用

demo=new demo();//乙個物件引用指向乙個物件

//也可以不指向物件

demo demo;//建立物件引用,但是沒有指向物件

2)從物件出發:

//乙個物件可以被乙個物件的引用引用

demo demo;//建立物件引用

demo=new demo();//建立物件,並被乙個物件引用指向

//也可以被多個物件引用同時引用。

demo demo1,demo2,demo3;//建立多個物件引用

demo1=new demo();

demo2=demo1;

demo3=demo2;//建立物件,並被多個物件引用指向

物件引用的區別obj a

我們先來看下面的 var a 100 var obj console.log obj a console.log obj.a console.log obj a 執行結果依次為1 1 undefined 第三行的輸出如果全域性變數沒有定義的話,那麼就是報錯的 我們可以得出結論。obj.a相當於obj...

物件與常物件的區別

include using namespace std class date date date int y,int m,int d year y month m day d 注意 常資料成員和指標資料成員只能用列表進行初始化。void date setdate int y,int m,int d ...

物件與常物件的區別

include using namespace std class date date date int y,int m,int d year y month m day d 注意 常資料成員和指標資料成員只能用列表進行初始化。void date setdate int y,int m,int d ...