→ diabloevagto:你的觀念基本上是對的,在程式結束的時候也會delete 05/17 07:33
→ diabloevagto:不知道array跟繼承class的dtor有沒有關系 05/17 07:33
→ diabloevagto:繼承的話ctor是從父類別先,dtor是從子類別先 05/17 07:34
→ purpose:沒聽過、沒看過有書或人,保證 delete [] 時的 dtor 順序 05/17 07:53
→ purpose:你也只是從結果看,也許別的系統不是這樣,應該不用在意吧 05/17 07:54
→ xatier:恩,因為這個是老師的考題,我也很懷疑會不會是 undefined 05/17 08:11
→ xatier:behavior ,所以上來問大家一下 :D 05/17 08:11
→ xatier:@diabloevagto 明白了,感謝! 05/17 08:12
推 purpose:我認為 array 內物件的建、解構順序應該是冷門而不重要的 05/17 08:16
→ purpose:誰在乎同類別的物件先後順序呢?通常都是關心異類的,主要 05/17 08:17
→ purpose:就是 1. base 的 ctor 早 dtor 晚; 2. 類別成員被定義(宣 05/17 08:18
→ purpose:告) 的比較早的,則 ctor 也會比較早 (所以 dtor 就晚) 05/17 08:19
→ xatier:@purpose: 為什麼 ctor 比較早 dtor 會比較晚?這邊不懂@@ 05/17 08:20
→ xatier:剛剛又複習了一下這邊的概念,總算有點頭緒了,感謝 p 大! 05/17 08:27
推 purpose:我回文講比較好寫 05/17 08:31
→ xatier:恩恩,麻煩您了!謝謝! 等等下課再回來看 :P 05/17 08:33
→ diabloevagto:@x:可以這麼想,要先有父親才有兒子,所以要先有 05/17 09:04
→ diabloevagto:base的ctor才有sub的ctor 05/17 09:04
→ diabloevagto:至於dtor因為在sub內包含base的data,所以要先把sub 05/17 09:05
→ diabloevagto:dtor才能再把base dtor,可以想想如果先把base tor 05/17 09:06
→ diabloevagto: dtor 05/17 09:06
→ diabloevagto:那sub包含的東西不就不見了 05/17 09:06
→ diabloevagto:我大概是這樣理解的,有錯請指教@@ 05/17 09:06
→ xatier:要先有父親才有兒子 XDDDD 05/17 09:42
推 loveme00835:try out -fno-elide-constructors option 05/17 09:47
→ xatier:xtended initializer lists only available with -std=c++0 05/17 09:50
→ xatier:這個是什麼意思阿@@ C++11 有新的規則? 05/17 09:50
→ xatier:forces G++ to call the copy constructor in all cases 05/17 09:51
→ xatier:看了一下 man g++,是強迫打開所有 copy ctor 的意思 05/17 09:52
→ xatier:原本就有用 std=c++0x 的 flag,剛剛嘗試版主說的那行就忘 05/17 09:54
→ xatier:了XDD 不過為什麼結果會變成 111222333321 呢@@? 05/17 09:55
→ loveme00835:keyword: initializer_list 05/17 10:10
→ xatier:看起來是會丟給 move ctor 去工作 05/17 10:26
→ loveme00835:所以正常情況下, 答案都不對 XD 05/17 10:32
→ loveme00835:上課學到哪些 c++11 的 feature呢? 真羨慕 <3 05/17 10:32
→ xatier:可是當這些 feature 變成作業海和考試山就悲劇了XDDDD 05/17 12:30
→ linotwo:一般的情況下,從系統分配記憶體的順序和歸還的順序 05/17 15:28
→ linotwo:應該是反過來的。最先分配的最晚歸還。 05/17 15:28
→ linotwo:這樣的效率最高並且可以減少記憶體碎片。 05/17 15:30
→ linotwo:用 [] 來 new 的記憶體是一整塊,但是在 class 裡面 05/17 15:31
→ linotwo:可能會需要從系統分配記憶體 05/17 15:32
→ linotwo:所以 delete 的時後順序倒過來,是正常釋放記憶體的順序 05/17 15:33
推 snaketsai:C++11 working draft n3337,Sect. 12.6 : 02/27 12:00
→ snaketsai:Destructors for the array elements are called in \ 02/27 12:01
→ snaketsai:reverse order of their construction. 02/27 12:02
→ snaketsai:不過真的很冷門就是了@@ 02/27 12:02