1、new是建立乙個物件,並申請乙個新的記憶體,
而如果建立乙個物件不new,就只是乙個虛擬物件,預設為null,當然也可以手動賦值為null,但是不會申請記憶體!
如下:
public class a()
....
public a1 =new a(); //申請了記憶體
public a2 = null; //不申請記憶體
a2 = a1 ; //其實就是把a1的位址賦值給a2,但不會自己重新申請記憶體,所以它倆指向同乙個位址,兩個物件,同一例項!
public a1 =new a(); //申請了記憶體
public a2 = new a(); //申請了記憶體
a2 = a1 ;//其實就是把a1記憶體位址上的值拷貝給a2記憶體位址上值!
這個機制多應用於整個系統只要求或只能有乙個類只能被例項一次時使用,例項一次,(把第一次例項的物件當乙個球(固定位址))拋來拋來,輪流共同使用!
拷貝和賦值區別
拷貝是構造行為,狀態取決於用於構造的物件 賦值是對已構造物件進行狀態更新。賦值側重於更新,構造側重於構造。下面這個語句被識別為構造 string str string strr str 我是構造,不是賦值下面這個語句被識別為賦值 string str string strr strr str 我才是...
初始化和賦值的區別
區別說明 賦值操作是在兩個已經存在的物件間進行的,而初始化是要建立乙個新的物件,並且其初值 於另乙個已存在的物件。編譯器會區別這兩種情況,賦值 的時候呼叫過載的賦值運算子,初始化的時候呼叫拷貝建構函式。如果類中沒有拷貝建構函式,則編譯器會提供乙個預設的。這個預設的拷貝建構函式只是簡單地復 製類中的每...
物件複製和物件賦值的區別
1.何時呼叫複製建構函式 複製建構函式用於將乙個物件複製到新建立的物件中。也就是說,它用於初始化過程中,而不是常規的賦值過程中。類的複製建構函式原型通常如下 class name const class name 它接受乙個指向類物件的常量引用作為引數。例如,string類的複製建構函式的原型如下 ...