課程
/后端開發
/C++
/C++遠征之封裝篇(上)
int main(void)
{
Student stu1;
Student stu2=stu1;
Student stu3(stu1);
return 0;
}
2018-08-03
源自:C++遠征之封裝篇(上) 6-7
正在回答
有道理,可能你的重點是你認為它調用了構造函數
三、淺拷貝與深拷貝? ??1. 默認拷貝構造函數? ?很多時候在我們都不知道拷貝構造函數的情況下,傳遞對象給函數參數或者函數返回對象都能很好的進行,這是因為編譯器會給我們自動產生一個拷貝構造函數,這就是“默認拷貝構造函數”,這個構造函數很簡單,僅僅使用“老對象”的數據成員的值對“新對象”的數據成員一一進行賦值,它一般具有以下形式:
Rect::Rect(const?Rect&?r) { ????width=r.width; ????height=r.height; } 這涉及到了淺拷貝和深拷貝。我也是百度的,我自己的理解就是像上次回答一樣,這個函數就只會初始化列表,沒有調用 構造函數里面的語句代碼。
慕運維9949243 提問者
因為啊 打印student那句代碼是寫在構造函數里面的,如果你沒有自己定義拷貝構造函數,系統就會自動生成拷貝函數,這個函數就只會初始化列表。里面是沒有cout那句代碼的,所以只會打印一個student。
舉報
封裝--面向對象的基石,本教程力求幫助小伙伴們即學即會
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-08-05
有道理,可能你的重點是你認為它調用了構造函數
三、淺拷貝與深拷貝
? ??1. 默認拷貝構造函數
? ?很多時候在我們都不知道拷貝構造函數的情況下,傳遞對象給函數參數或者函數返回對象都能很好的進行,這是因為編譯器會給我們自動產生一個拷貝構造函數,這就是“默認拷貝構造函數”,這個構造函數很簡單,僅僅使用“老對象”的數據成員的值對“新對象”的數據成員一一進行賦值,它一般具有以下形式:
2018-08-04
因為啊 打印student那句代碼是寫在構造函數里面的,如果你沒有自己定義拷貝構造函數,系統就會自動生成拷貝函數,這個函數就只會初始化列表。里面是沒有cout那句代碼的,所以只會打印一個student。