返回对象2(调用了拷贝构造函数)
生活随笔
收集整理的這篇文章主要介紹了
返回对象2(调用了拷贝构造函数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- CMyString MyString=GetMystring()
觸發拷貝構造函數原型
CMyString MyString=GetMystring()
;
這里比較難理解的是,地址401160~地址401164的代碼,它把傳進來的返回對象this指針和局部對象的首地址當做參數傳入了拷貝構造函數,返回對象的this指針的意思就是:
當我們要調用一個類的成員函數時,我們必須傳入this指針,意思就是告訴函數是哪一個對象調用了它,操作了它。 這里中間插入拷貝構造函數代碼助于大家理解
而傳入局部對象首地址也就是把它當參數傳給拷貝構造函數的形參,讓函數去拷貝局部對象的一系列的成員 給 傳進來的返回對象(這里也就是通過真正的拷貝構造函數,判斷是否是深淺拷貝這得看代碼定義)
提示:假如沒有定義拷貝構造函數,編譯器會對原對象與拷貝對象中的各數據成員進行直接進行數據復制,稱為默認拷貝構造函數,容易出現前面所提的資源釋放錯誤
總結:
通過代碼分析可發現,GetMyString將返回對象的地址作為函數參數。在函數返回值前,利用拷貝構造函數將函數中局部對象的數據復制到參數所指的對象中,起到了返回對象的作用。
和 返回對象1 唯一不同的就是 局部對象---->返回對象 這個步驟,其它的都一樣
總結
以上是生活随笔為你收集整理的返回对象2(调用了拷贝构造函数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 返回对象1(未调用拷贝构造函数)
- 下一篇: 2020-12-16(虚析构函数,神逻辑