1:複製建構函式,在物件定義初始化時,會出現;此時的=不是賦值效果,而是複製建構函式的效果。
2:複製建構函式,定義在私有中,則禁止了操作,除了友元;若在私有中只是宣告不定義,則任何都無法呼叫建構函式
3:容器是有複製建構函式的。
4:類中指標成員有3種處理方式,一是複製指標的值共享所指物件,這樣會帶來指標安全問題;二是使用智慧型指標類可以達到 共享指標所指物件,且沒有指標安全問題;三是值型別,通過重新構造新的副本,獨立指標所指物件,沒有指標安全,但是有複製工程的耗費。
5:複製控制中3中操作,複製建構函式,賦值操作,解析函式,對於賦值操作是其他2個的和操作。先刪除自身的成員,接著獲取右運算元的成員。複製構造函式引數必須是引用,而賦值則一般是引用,否則會多餘操作乙個複製建構函式。
6:此部分重點理解3個操作應用的必要性,一般是針對出現了指標。
7:引用還是不要引用區域性變數,即使你得到了值,只是該棧還沒有被處理而已,實際邏輯上是被處理的,若有變數壓入棧,則就會出問題,此處記憶體本來是釋放了,狀態未知。
8:引用成員也得注意複製控制操作,因為及其可能導致引用的物件消失了。
C Primer 第十三章 複製控制
複製建構函式 賦值操作符和析構函式總稱為複製控制。編譯器自動實現這些操作,但類也可以定義自己的版本。複製建構函式是一種特殊建構函式,具有單個形參,該形參 常用 const 修飾 是對該類型別的引用。析構函式是建構函式的互補 當物件超出作用域或動態分配的物件被刪除時,將自動應用析構函式。不管類是否定義...
第十三章 拷貝控制
在定義任何 c 類時,拷貝控制操作都是必要部分。如果我們不顯示定義這些操作,編譯器也會為我們定義,但編譯器定義的版本的行為可能並非我們所想。拷貝初始化不僅在我們用 定義變數時會發生,在下列情況下也會發生 將乙個物件作為實參傳遞給乙個非引用型別的形參 從乙個返回型別為非引用型別的函式返回乙個物件 用花...
第十三章 拷貝控制
如果乙個建構函式第乙個引數是自身類型別的引用,且任何額外引數都有預設值,則為拷貝建構函式 拷貝初始化發生情況 拷貝建構函式自己的引數必須是引用型別否則會遞迴死迴圈 拷貝賦值運算子是乙個名為 operator 的函式 建構函式初始化物件的非static資料成員 析構函式釋放物件使用的資源,並銷毀物件的...