Re: [問題] copy constructor
※ 引述《Arim (Arim5566)》之銘言:
: 爬了許多文,還是不懂copy constructor為什麼一定要用call by reference
: 否則會產生無窮迴圈?
: 可以請版友不吝指教一下嗎 謝謝
假設有一 function foo 長成這樣:
foo(Bar bar);
bar 是 pass-by-value 的.
當有人要 invoke foo()
Bar myBar
foo(myBar);
進入 foo 之前, 因為是 pass by value, 所以要生成一個
myBar 的 copy. 要怎樣生成呢? compiler 會利用 copy ctor
生成一個 myBar 的複製品, 然後供 foo() 裡面使用.
這裡明白還明白嗎?
把故事放回你的問題:
要是 copy ctor 是 pass-by-value 的話, 比如
Bar myBar;
Bar barCopy(myBar);
生成 barCopy 的時候, 因為 myBar 是 pass by value, 所以 compiler
要生成一個 myBar 的複製品 (假設叫 tmpBarA) 才傳進去生成 barCopy.
但生成 tmpBarA, 也是利用 copy ctor, 即是 compiler 是在做
Bar tmpBarA(myBar);
由於是 pass-by-val, 那麼要生成 tmpBarA, 其實傳進去的是 myBar 的一個
複製品 (tmpBarB).
要生成 tmpBarB.......
這樣明白了嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
推
10/22 21:14, , 1F
10/22 21:14, 1F
→
10/22 21:16, , 2F
10/22 21:16, 2F
→
10/22 21:16, , 3F
10/22 21:16, 3F
推
10/22 21:34, , 4F
10/22 21:34, 4F
推
10/22 22:12, , 5F
10/22 22:12, 5F
推
10/22 22:29, , 6F
10/22 22:29, 6F
→
10/22 22:30, , 7F
10/22 22:30, 7F
→
10/22 22:32, , 8F
10/22 22:32, 8F
→
10/22 22:35, , 9F
10/22 22:35, 9F
推
10/22 22:35, , 10F
10/22 22:35, 10F
→
10/22 22:36, , 11F
10/22 22:36, 11F
→
10/22 22:38, , 12F
10/22 22:38, 12F
→
10/22 22:39, , 13F
10/22 22:39, 13F
→
10/22 22:45, , 14F
10/22 22:45, 14F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 5 篇):