1. 程式人生 > >default constructor 和 copy constructor 小結

default constructor 和 copy constructor 小結

的,當不存在以上4種情況時,其implicitly copy constructor就是bitwise copy的。只有no bitwise copycopy constructor才會被編譯器真正生成,而bitwise copy的不會生成。三、對於defualt constructor,當一個class內顯式地存在constructor(包括default constructor)時,編譯器不會再生成它,但如果這個class滿足以上4中情況至少一種時,編譯器就需要負責執行相關的初始化:對於情況(1)要呼叫成員物件的default constructor;對於情況(2)要呼叫基類的default constructor
;對於情況(3)要設定虛擬函式表的指標;對於情況(4)要設定虛基類的指標和偏移量。而這些初始化在使用者程式碼執行前。四、對於copy constructor,當一個class內顯式地存在copy constructor時,編譯器不會再生成它,但如果這個class滿足以上情況(3)()(4)時,編譯器就需要負責執行相關的拷貝:對於情況(3)要決定怎麼設定虛擬函式表指標。對於情況(4)要決定怎麼設定虛基類的指標和偏移量。同理類推,如果這個class滿足情況(1)()(2),而且其成員物件或基類子物件又滿足情況(3)()(4)時,編譯器也需要負責執行相關的拷貝了。而這些拷貝在使用者程式碼執行前。