[問題] vector<T>中erase()與dtor呼叫時機的關係
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Windows codeblock12.11 GCC 4.7.1
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
no
程式碼(Code):(請善用置底文網頁, 記得排版)
Q1: http://ideone.com/qhnWs8
Q2: http://ideone.com/szu4Jh
-------------------------------------------------------------
問題1:
為什麼vector中呼叫destructor的順序
跟一般物件呼叫destructor的順序不同?
物件不是會保持"後進先出"的原則嗎?
問題2:
為什麼Avec.erase(iter)呼叫到的destructor竟然是
~A() called and cptr is 3?
iter現在指到的物件不是應該是a1嗎?
接下去的destructor順序雖然a1似乎是不見了
但是a3的內容似乎也被delete掉了
--------------------------------------------------------------
以上兩個新手問題還請各位大大幫忙!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.12.208.228
推
06/06 13:04, , 1F
06/06 13:04, 1F
→
06/06 13:06, , 2F
06/06 13:06, 2F
→
06/06 13:07, , 3F
06/06 13:07, 3F
推
06/06 13:21, , 4F
06/06 13:21, 4F
→
06/06 13:21, , 5F
06/06 13:21, 5F
→
06/06 13:25, , 6F
06/06 13:25, 6F
→
06/06 19:10, , 7F
06/06 19:10, 7F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章