• <table id="4yyaw"><kbd id="4yyaw"></kbd></table>
  • <td id="4yyaw"></td>
  • 發布時間:2020-09-28 23:06 原文鏈接: C++之拷貝構造函數的淺copy和深copy(四)

    輸出結果:

    root@txp-virtual-machine:/home/txp# g++ test.cpp
    root@txp-virtual-machine:/home/txp# ./a.out
    t1.i = 2, t1.j = 3, t1.p = 0xb0a010
    t2.i = 2, t2.j = 3, t2.p = 0xb0a030

    注解:從打印的p地址空間來看,就知釋放的兩個對象的堆空間不同,不再是指向同一堆空間了;同時我們發現淺拷貝只是簡單數值上的進行賦值而已;深拷貝不只是簡單的值賦值,而是從內存的角度來看,是操作不同的內存。

    5、什么時候需要進行深拷貝?

    (1)對象中有成員指代了系統中的資源

    成員指向了動態內存空間

    成員打開了外存中的文件

    成員使用了系統中的網絡端口

    注意:一般來說,自定義拷貝構造函數(也就是我們自己手寫的),必然需要實現深拷貝!

    二、總結:

    C++編譯器會默認提供構造函數

    無參構造函數用于定義對象的默認初始化狀態

    拷貝構造函數在創建對象時拷貝對象的狀態

    對象的拷貝有淺拷貝和深拷貝兩種方式。


  • <table id="4yyaw"><kbd id="4yyaw"></kbd></table>
  • <td id="4yyaw"></td>
  • 调性视频