C++中的複製構造函數

          複製構造函數,這個名字一聽起來就讓人有點不寒而粟。從國外書上翻譯的東西總是那麼讓人難以理解,什麼對象,實體,聽起來着實專業,,,,,,,,,,,,,,

          要說複製構造函數,這個東西又是C++中的一個難點,至少很多人是這麼說的,卻實有這麼一點。許多C++的書上也是這麼說的。我看的那本《c++ primer plus〉中更是對這種函數大加渲染,讓讀者如 墜雲霧,不過由於C++的複雜性,細節性,這種函數着實在好好研究一下。

        我覺得重點一是:複製;二是:構造。

        在程序中初使化對象時,要調用複製構造函數,一種情況是直接用它構造對象,另一種情況是先用它來構造一具臨時對象,再調用賦值操作符。這就要取決於編繹器了。說 白了,自制構造函數和一般的構造函數一樣都是用來創建對象的,只 不過其用於對象的初 使化對象中的。

       其實注意複製構造函數的情況是,類的私有數據成員包含指針的情況,這個指針指向內存中的數據。我們知道在沒有在程序中沒有顯示的定義複製構造函數,程序在初使化對象時將隱式的調用複製構造函數,這個函數只是簡單的完成對象成員之間的賦值,即“淺複製”,無法複製指針所指 向的內存數據,這樣被初使化的對象中的成員指針就和原對象中的指針指向同一塊內存地址,這樣的後果不用說也知道麻煩大了。

      顯示的複製構造函數就是爲是解決這個問題的,其完成“深度自制”,即保證被初使化的對象的成員指針的指向一塊獨立的內存數據幅本。通過構造這種函數就可以解決這種問題。

     歸根到底,還是一個指針的問題。指針與內存問題在現在的編程中總是能製造大大小小的bug ,在C++中儘管對數據進行封裝隱藏,但有時候還是會暴露出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章