複製(拷貝)構造函數
複製(拷貝)構造函數接受其所屬類的對象作爲參數,原型如下 MyClass::MyClass(const MyClass& aClass);
在下述情況下,將使用複製(拷貝)構造函數
1 將新的對象初始化爲一個同類對象. MyClass aClass;MyClass bClass(aClass);
2 按值將對象傳遞給函數. void MyFunction(MyClass aClass);
3 函數按值返回對象. 與第四條吻合,按值返回對象時,編譯器總是會產生一個臨時對象
4 編譯器生成臨時對象
如果沒有使用(不管是顯式或隱式)複製構造函數,編譯器將提供原型,但不提供函數定義.否則,程序將定義一個執行成員初始化的複製構造函數,也就是說,新對象的每個成員都被初始化爲原始對象相應成員的值
帶有指針類型的成員變量的類通常需要進行深拷貝,或者類可能包含需要修改的靜態變量,此時,最好自己定義個複製構造函數並進行深拷貝.
在下述情況下,將使用複製(拷貝)構造函數
1 將新的對象初始化爲一個同類對象. MyClass aClass;MyClass bClass(aClass);
2 按值將對象傳遞給函數. void MyFunction(MyClass aClass);
3 函數按值返回對象. 與第四條吻合,按值返回對象時,編譯器總是會產生一個臨時對象
4 編譯器生成臨時對象
如果沒有使用(不管是顯式或隱式)複製構造函數,編譯器將提供原型,但不提供函數定義.否則,程序將定義一個執行成員初始化的複製構造函數,也就是說,新對象的每個成員都被初始化爲原始對象相應成員的值
帶有指針類型的成員變量的類通常需要進行深拷貝,或者類可能包含需要修改的靜態變量,此時,最好自己定義個複製構造函數並進行深拷貝.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Android C++系列:JNI調用時的異常處理
轻口味
2021-11-19 10:03:53
國內最大的C++軟件項目之一,WPS的“自守”之道
罗燕珊
2021-10-28 14:23:59
談 C++17 裏的 Memento 模式
hedzr
2021-10-18 14:13:51
談 C++17 裏的 State 模式之二
hedzr
2021-10-12 21:03:51
英特爾最新版C/C++編譯器採用LLVM架構,性能提升明顯
James R Reinders
2021-09-17 10:48:52
C++實用指南
Bartlomiej Filipek
2021-07-22 10:03:58
編程語言巔峯之戰,誰纔是真正的王者?| InfoQ編程語言排行榜
田晓旭
2021-07-20 11:43:51
SpaceX龍飛船性能要求嚴苛,軟件開發存挑戰
凌敏
2021-05-14 13:43:55
縱觀20年間國外碼農的薪酬變化:漲幅下降,初級編碼崗大幅消失
NICOLE KOW
2021-03-22 18:35:29
如果編程語言是《權力的遊戲》中的角色?(上)
Sajid Lhessani
2021-03-22 18:35:23
InfoQ 編程語言 2 月排行榜,更好的投票活動來了
InfoQ 中文站
2021-03-22 18:34:58
InfoQ 編程語言1月排行榜:邀你投票
InfoQ 中文站
2021-01-21 17:28:56
2021年最值得學習的10種編程語言
Statistics and Data
2021-01-19 14:13:58
我是如何愛上 Julia 編程語言的?
Emmett Boudreau
2020-12-29 14:24:00