C 中物件的賦值與複製操作詳細解析

2021-07-05 14:43:22 字數 1604 閱讀 3986

物件的賦值

如果對乙個類定義了兩個或多個物件,則這些同類的物件之間可以互相賦值,或者說,乙個物件的值可以賦給另乙個同類的物件。這裡所指的物件的值是指物件中所有資料成員的值。

物件之間的賦值也是通過賦值運算子「=」進行的。本來賦值運算子「=」只能用來對單個的變數賦值,現在被擴充套件為兩個同類物件之間的賦值,這是通過對賦值運算子的過載實現的。

實際上這個過程是通過成員複製來實現的,即將乙個物件的成員值一一複製給另外乙個物件的成員。

物件賦值的一般形式:

物件名1=物件名2;

注意,物件1和物件2必須是屬於同乙個類

*****====示例**1.1***************

複製**

**如下:

#include

#include

using namespace std;

class student ;

student::student(int nu,string na,int sc)

void student::show()   

複製建構函式也是建構函式,但它只有乙個引數,這個引數時本類的物件,而且採用物件的引用形式(一般約定加const宣告,使引數值不能改變,以免在呼叫函式時因不慎而使物件值被修改)。此複製建構函式的作用就是將實參物件的各資料成員的值一一賦給新的物件中的成員的值。

對於語句

複製**

**如下:

student s2(s1);  

這實際上也是建立物件的語句,建立乙個新物件s2。由於在括號內給定的實參是物件,編譯系統就呼叫複製建構函式,實參s1的值傳給形參b(b是s1的引用)。

c++還提供另外一種方便使用者的複製形式,用賦值號代替括號

其一般形式是:

類名    物件名1        =        物件名2;

複製**

**如下:

student s2=s1;

還可以在乙個語句中進行多個物件的賦值。

複製**

**如下:

student    s2=s1,s3=s2,s4=s3;  

物件的複製和賦值的區別

物件的賦值是對乙個已經存在的物件賦值,因此必須先定義被賦值的物件,才能進行賦值。而物件的複製則是乙個從無到有地建立乙個新的物件,並使它與乙個已有的物件完全相同(包括物件的結構和成員的值)

複製**

**如下:

#include

#include

using namespace std;  

class student  

;  student::student(int nu,string na,int sc)     

void student::reset()     

void student::show()  

;  student::student(int nu,string na,int sc)     

student::student(const student &s)     

void student::reset()     

void student::show()     

int main()    

c 物件的複製與賦值

1 物件的賦值 如果對乙個類定義了兩個或多個物件,則這些同類的物件之間可以互相賦值,或者說,乙個物件的值可以賦給另乙個同類的物件。這裡所指的物件的值是指物件中所有資料成員的值。物件之間的賦值也是通過賦值運算子 進行的。本來,賦值運算子 只能用來對單個的變數賦值,現在被擴充套件為兩個同類物件之間的賦值...

物件的賦值與物件的複製

物件的賦值針對指物件中所有資料成員的值 物件的賦值只對其中的資料成員賦值 物件賦值中,不涉及成員函式的話題,因為同一類的所有物件有各自 的成員資料,但是成員函式是共享的。同類物件之間可以互相賦值,物件名1 物件名2.實現的原理 賦值運算子的過載。物件的複製是用已有的物件轉殖出乙個新物件 類名 物件2...

C 物件的賦值和複製

3.6.1 物件賦值語句 如同基本型別賦值語句一樣,同型別的物件之間也可以進行賦值,即乙個物件的值可以賦給 另乙個物件。這裡所指的物件的賦值是指對其中的資料成員賦值,而不對成員函式賦值。例如 a和b是同一類的兩個物件,那麼下述物件賦值語句 b a 就能把物件a的資料成員的值逐位複製給物件b 例3.2...