php中拷貝建構函式、賦值運算子多載詳解_PHP教程

來源:互聯網
上載者:User
本文章詳細的介紹了關於php中拷貝建構函式、賦值運算子多載詳解,有需要瞭解的同學可參考一下下哦。

對象的賦值與複製: 賦值:通過“ = ”運算子多載

代碼如下 複製代碼

User a(10),b;

b = a;

複製:調用複製建構函式

User b;

User a(b);

或者

User a = b;//相當於User a(b);

與賦值的區別,賦值是對一個已經存在的對象進行賦值(已經實現定義了被賦值的對象),而複製是從無到有建立一個新的對象,並使它與已有的對象相同。

淺複製與深複製: 若對象中有指標成員,在複製時,只會將該指標成員的地址複製給建立立的對象,因此,兩個對象中的指標成員都指向了同一塊記憶體地區,在釋放時會出現重複釋放的問題。 需要手動定義複製建構函式,在建構函式中將為指標變數分配新的記憶體,是不同對象的指標成員指向不同的記憶體地區。

用到拷貝建構函式的三種情況: 1、需要建立一個新對象,並用另一個同類對象對其進行初始化 2、函數的參數為類的對象時,在調用函數時需要建立一個實參的拷貝,按實參複製一個形參,系統是通過調用拷貝建構函式實現的 3、函數的傳回值是類的對象:函數調用結束時,需要將函數中的對象複製一個臨時對象,並傳給該函數的調用處。

代碼如下 複製代碼

User getUser()

{

User temp;

return temp;

}

int main()

{

User user = getUser();//調用getUser();

}

getUser()函數調用結束時,getUser中建立的對象temp的生命週期結束(即將銷毀),所以不是將temp帶回main,而是在執行return語句時,調用User類的拷貝建構函式,按temp拷貝一個新的、對象,然後將它賦值給user.

http://www.bkjia.com/PHPjc/629095.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629095.htmlTechArticle本文章詳細的介紹了關於php中拷貝建構函式、賦值運算子多載詳解,有需要瞭解的同學可參考一下下哦。 對象的賦值與複製: 賦值:通過...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.