c++ 學習 -- 複製建構函式

來源:互聯網
上載者:User

       複製建構函式是個非常微妙的函數,如果不能深刻理解它,可是會出現很多莫名奇妙的錯誤,下面通過一個程式來詳細的介紹其中的奧妙。

      1 c++中的隱士成員函數

         (1)預設建構函式,如果沒有定義

         (2)複製建構函式,如果沒有定義

         (3)賦值操作符,如果沒有定義

         (4)預設解構函式,如果沒有定義

         (5)地址操作符,如果沒有定義

     2 重點講一下複製建構函式

       複製建構函式講一個對象複製 到一個建立的對象中,也就是說,它用於初始化的過程中,而不是常規的賦值過程中。

        className(const  className &);

     (1)複製建構函式的功能

       逐個複製非靜態成員,複製的是值。這就會導致一個問題,在對象中有指標時,只是複製的指標的地址,而沒有複製實際的內容,這時,我們必須顯示的定義複製建構函式來解決這個問題。

       (2)複製建構函式並沒有在建構函式中增加建立對象的個數,但是他卻會調用解構函式,這就會導致你在建構函式中的計數不準確。

       (3)就像(1)中提到的,它只是複製了指標的地址,因此,對象調用解構函式的時候,最先調用解構函式的那個對象釋放了指標指向的空間,但是當其他對象再次調用解構函式的時候,還會去釋放這段空間,這就導致了同一個空間被delete兩次,同常表現為亂碼。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.