C 類物件的複製和賦值

2021-10-10 06:45:21 字數 1126 閱讀 5132

//例1.類物件複製,拷貝建構函式

#includeusing namespace std;

class student

void setname(string str);

void getname();

private:

string m_strname;

};void student::setname(string str)

void student::getname()

int main()

//輸出

在main()函式初始化中,將stu1的複製給了stu2和stu3,理論上應該是初始化了三次,

那麼應該輸出三行「student」,但實際執行後我們發現,只輸出一行「student」。

這兩種例項化方式時呼叫的是拷貝建構函式,而不是**中的建構函式:

在沒有定義拷貝建構函式時,【系統會自動生成乙個拷貝建構函式並呼叫】

這也是為什麼上面**只輸出了乙個「student」。

定義格式:類名(const 類名& 變數名)

class student

**student(const student& stu){}**

private:

string m_strname;

};//例2.類物件的複製和賦值

#includeusing namespace std;

class student

student(const student& stu)

void setname(string str);

void getname();

private:

string m_strname;

};void student::setname(string str)

void student::getname()

int main()

//輸出結果

呼叫了一次建構函式

zhangsan

呼叫了一次拷貝建構函式

zhangsan_copy

呼叫了一次建構函式

zhangsan

呼叫了一次拷貝建構函式

zhangsan_copy

C 物件的賦值和複製

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

物件複製和物件賦值

1 先看這個例子 include include using namespace std class student 建構函式 student string strname,int nage name strname age nage 帶引數的建構函式 student void show int m...

物件的賦值和複製

物件之間可以通過賦值運算子 進行賦值運算,通過以下的程式可以看出。include using namespace std class box box box int h,int w int len int box volume int main 說明 物件的賦值只對其中的資料成員進行賦值,而不對成員...