程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c++-關於復制構造函數跟賦值運算符重載

c++-關於復制構造函數跟賦值運算符重載

編輯:編程解疑
關於復制構造函數跟賦值運算符重載

新手求指導 關於兩個函數不太理解 復制構造的是同一個內存地址嗎 為什麼要重載賦值運算符

最佳回答:


賦值運算符和復制構造函數都是用已存在的B對象來創建另一個對象A。不同之處在於:賦值運算符處理兩個已有對象,即賦值前B應該是存在的;復制構造函數是生成一個全新的對象,即調用復制構造函數之前A不存在。
CTemp a(b); //復制構造函數,C++風格的初始化
CTemp a=b; //仍然是復制構造函數,不過這種風格只是為了與C兼容,與上面的效果一樣
在這之前a不存在,或者說還未構造好。
CTemp a;
a=b; //賦值運算符
在這之前a已經通過默認構造函數構造完成。

而之所以要自定義這些,是因為防止有指針時淺拷貝造成錯誤。具體可百度 rule of three原則

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved