Copy Constructor

拷貝構造函數是用來執行類對象複製、賦值、值傳遞的函數,其函數變量是類對象自己的引用。通常有兩種使用方式:用同一類對象來初始化當前類對象(顯式)將類對象做爲函數參數或者做爲函數返回值(隱式)函數

一般的實現方式有淺拷貝和深拷貝。指針

淺拷貝 按位拷貝,確保兩個類對象每一個bit都相同。(編譯器默認生成的copy constructor是這種拷貝方式)對象

深拷貝 挨個成員拷貝,確保每一個成員的內容都相同。繼承

當類存在:編譯器

     1. 有靜態成員變量,且該變量在構造或者析構時會改變it

     2. 有指針變量時編譯

     3. 當類中包含其餘的類成員對象(而這個類有自定義的拷貝構造函數時)變量

  4. 繼承類,其父類自定義了拷貝構造函數構造函數

  5. 存在virtual成員的多態繼承的狀況,須要考慮vptr的拷貝引用

 

拷貝構造函數的條件:

對於一個類X, 若是一個構造函數的第一個參數是下列之一:a) X&b) const X&c) volatile X&d) const volatile X&且沒有其餘參數或其餘參數都有默認值,那麼這個函數是拷貝構造函數.

相關文章
相關標籤/搜索