一、前言
為了接下來進行更好的分析,我先建立乙個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 ...