[問題] 有效範圍跟生命週期

看板C_and_CPP (C/C++)作者 (p.5566)時間15年前 (2010/11/10 01:13), 編輯推噓5(5016)
留言21則, 3人參與, 最新討論串1/1
剛剛看到一題題目 題目是說 identify all the ComplexNumber objects For ComplexNumber object identified, what is its scope and lifetime? ComplexNumber foo() { ComplexNumber c(1,1); return ComplexNumber (0,0); } 可是他不是大括號做完就做完了嗎? 所以不太知道這一題的答案是要怎麼表達 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.65.184

11/10 01:28, , 1F
是不是少分號 ? 你想知道的是哪一個物件 ?
11/10 01:28, 1F
感謝提醒 題目已更正 ※ 編輯: page5566 來自: 61.231.65.184 (11/10 01:31)

11/10 01:33, , 2F
scope在{}裡,return後就結束
11/10 01:33, 2F
感謝回答 我也是這麼想 當初覺得好像沒那麼簡單 ※ 編輯: page5566 來自: 61.231.65.184 (11/10 01:35)

11/10 01:40, , 3F
return是複制到EAX還是丟進推疊呀?
11/10 01:40, 3F

11/10 01:41, , 4F
c 物件沒有疑問是在大括號結束時被銷毀, 但是return
11/10 01:41, 4F

11/10 01:42, , 5F
eax吧,不是放堆疊就是了
11/10 01:42, 5F

11/10 01:42, , 6F
的那個匿名物件, 可能就是你回傳的那個, 如果再用 ref
11/10 01:42, 6F

11/10 01:43, , 7F
to const 來接, 那麼他的存活時間可以跟整支程式一樣
11/10 01:43, 7F

11/10 01:50, , 8F
return的東西是很大的東西的話,不知道是組語是怎麼做的
11/10 01:50, 8F

11/10 01:51, , 9F
一樣是存位址
11/10 01:51, 9F

11/10 01:52, , 10F
在函數中呼叫foo的話,存活時間跟函數一樣吧?
11/10 01:52, 10F

11/10 02:04, , 11F
還有 static 的情況喔~
11/10 02:04, 11F

11/10 02:05, , 12F
給原 po 參考的測試程式 : http://ppt.cc/S2b3
11/10 02:05, 12F

11/10 02:15, , 13F
如果是foo2(foo());那foo()的ComplexNumber(0,0)怎麼傳
11/10 02:15, 13F

11/10 02:16, , 14F
之前寫程式用到大型結構都是傳指標,從沒想過直接傳過去
11/10 02:16, 14F

11/10 09:55, , 15F
沒有最佳化的情況下, foo() 裡的ComplexNumber(0,0)會
11/10 09:55, 15F

11/10 09:56, , 16F
被拿來用拷貝建構子初始化一個臨時物件, 再傳給foo2()
11/10 09:56, 16F

11/10 09:57, , 17F
的時候, 再把這個臨時物件用拷貝建構子初始foo2()參數
11/10 09:57, 17F

11/10 09:59, , 18F
其實已經是不同的物件了
11/10 09:59, 18F

11/11 05:03, , 19F
樓上要不要po一篇const ref的用法?串了一下reference
11/11 05:03, 19F

11/11 05:05, , 20F
好像沒有文章整理會用到const ref的幾種時機
11/11 05:05, 20F

11/11 12:33, , 21F
我試試...> <"
11/11 12:33, 21F
文章代碼(AID): #1CsO4Z9E (C_and_CPP)
文章代碼(AID): #1CsO4Z9E (C_and_CPP)