複製(拷貝)構造函數

複製(拷貝)構造函數接受其所屬類的對象作爲參數,原型如下 MyClass::MyClass(const MyClass& aClass);
在下述情況下,將使用複製(拷貝)構造函數
1 將新的對象初始化爲一個同類對象. MyClass aClass;MyClass bClass(aClass);
2 按值將對象傳遞給函數. void MyFunction(MyClass aClass);
3 函數按值返回對象. 與第四條吻合,按值返回對象時,編譯器總是會產生一個臨時對象
4 編譯器生成臨時對象
如果沒有使用(不管是顯式或隱式)複製構造函數,編譯器將提供原型,但不提供函數定義.否則,程序將定義一個執行成員初始化的複製構造函數,也就是說,新對象的每個成員都被初始化爲原始對象相應成員的值
帶有指針類型的成員變量的類通常需要進行深拷貝,或者類可能包含需要修改的靜態變量,此時,最好自己定義個複製構造函數並進行深拷貝.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章