Re: [問題] class解構function呼叫問題

看板C_and_CPP作者 (妳,我可以)時間7年前 (2016/11/01 00:14), 編輯推噓0(0016)
留言16則, 2人參與, 最新討論串2/2 (看更多)
你把你的 ball 補上以下東西,然後再 step by step 追一次看看 ball(const ball& src) operator=(const ball& src) 如果你要模擬傳統 C linked list,而且不想面對以上兩個 function member,又要達成自動記憶體管理, 感覺 boost::shared_ptr 是最好的選擇? -- 各種雜七雜八的心得與無病呻吟 http://goodspeedlee.blogspot.tw/ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.58.24 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1477930467.A.2AE.html

11/01 18:52, , 1F
感謝 已經ok了
11/01 18:52, 1F

11/03 00:59, , 2F
總覺得這個思維好像有點問題(我是指原原PO的)
11/03 00:59, 2F

11/03 01:00, , 3F
副程式回傳的應該是沒有名字的(右值)
11/03 01:00, 3F

11/03 01:01, , 4F
要求她存在好像@@ 應該可以用其他方式達成吧~
11/03 01:01, 4F

11/03 01:02, , 5F
然後,弄個容器存下來就不會被解構了~
11/03 01:02, 5F

11/03 01:02, , 6F
ball b1; ball b2 = b1.fun(); system("pause");
11/03 01:02, 6F

11/03 01:03, , 7F
不確定你的 程式是寫怎樣~我用我猜的方式說明~~
11/03 01:03, 7F

11/03 01:04, , 8F
你可以乾脆在 fun()裡面 (*this)=bx 改值~
11/03 01:04, 8F

11/03 01:05, , 9F
或是主程式內 b2.fun(b1) 這樣的方式改
11/03 01:05, 9F

11/03 01:05, , 10F
不知道有沒有說清楚呢QQ
11/03 01:05, 10F

11/03 01:07, , 11F
我有誤會什麼,講錯什麼也可以跟我說說~~
11/03 01:07, 11F

11/03 01:10, , 12F
這麼說不知道對不對,右值的存在只是暫存給你複製
11/03 01:10, 12F

11/03 01:10, , 13F
這麼想吧~她要是不自動解你也沒辦法解對吧~
11/03 01:10, 13F

11/03 01:11, , 14F
然後你呼叫好幾次之後....
11/03 01:11, 14F

11/03 01:40, , 15F
如果只是想把值傳出主程式沒有 b1 b2 資料交互使用
11/03 01:40, 15F

11/03 01:40, , 16F
ball & ball::fun() 傳參考出來就不會被解了~
11/03 01:40, 16F
文章代碼(AID): #1O5stZAk (C_and_CPP)
文章代碼(AID): #1O5stZAk (C_and_CPP)