物件的賦值針對指物件中所有資料成員的值;
物件的賦值只對其中的資料成員賦值
物件賦值中,不涉及成員函式的話題,因為同一類的所有物件有各自
的成員資料,但是成員函式是共享的。
同類物件之間可以互相賦值,物件名1=物件名2.
實現的原理:賦值運算子的過載。
物件的複製是用已有的物件轉殖出乙個新物件:類名 物件2(物件1),比如:
box box2(box1);
對於上面的語句來說,box2的初始化的引數是另外乙個物件。
物件的複製的原理:編譯系統提供的預設複製建構函式。該複製建構函式舉例如下:
box::box(const box &b)
上面預設複製建構函式中的引數用引用型別的好處為:不必為了這個物件專門開闢儲存空間。
引數之所以用const型別是因為沒有必要在函式中改變b的值,有效保護b引用的實參不被修改。
等價的形式: 類名 物件2=物件1;這種也執行複製建構函式
例如:box box2=box1;
賦值初始化 vs 複製初始化
c味的賦值初始化 c++味的複製初始化(呼叫預設複製建構函式)
int a=5 int a(5);
float w=a+3.2 float w(a+3.2)
string name="l. he" string name("l.he")
string s(name);
time t1;
time t2(8,30,20)
time t3(t1);
何時要通過複製建構函式進行物件複製?
1.新建立乙個物件:利用複製建構函式進行初始化
box box1(box2);
2. 當函式的引數為類的物件:呼叫函式時,將實參物件完整地傳遞給形參,通過呼叫
複製建構函式來建立乙個實參的拷貝
3. 函式的返回值是類的物件:在函式呼叫完畢,將函式中的物件複製乙個臨時物件並傳遞給該函式的呼叫處。
c 物件的複製與賦值
1 物件的賦值 如果對乙個類定義了兩個或多個物件,則這些同類的物件之間可以互相賦值,或者說,乙個物件的值可以賦給另乙個同類的物件。這裡所指的物件的值是指物件中所有資料成員的值。物件之間的賦值也是通過賦值運算子 進行的。本來,賦值運算子 只能用來對單個的變數賦值,現在被擴充套件為兩個同類物件之間的賦值...
物件複製和物件賦值
1 先看這個例子 include include using namespace std class student 建構函式 student string strname,int nage name strname age nage 帶引數的建構函式 student void show int m...
物件複製和物件賦值的區別
1.何時呼叫複製建構函式 複製建構函式用於將乙個物件複製到新建立的物件中。也就是說,它用於初始化過程中,而不是常規的賦值過程中。類的複製建構函式原型通常如下 class name const class name 它接受乙個指向類物件的常量引用作為引數。例如,string類的複製建構函式的原型如下 ...