看板 C_and_CPP 關於我們 聯絡資訊
敝人對vector某地方有點疑問 一般來說,local variable在函數中執行完便會消失 假設有被assign給其他的變數,在跳出函數後進行存取會變成無用值 那麼我寫了像下面一段程式: void Test() { int A = 100; Object.push_back(A); //Object為global變數 } int main() { Test(); cout <<Object.size() <<endl; //Result : 1 cout <<Object[0] <<endl; //Result : 100 return 0; } 請問,為什麼vector中的內容物可以正確被讀取? A這個int變數,不是為local variable嗎? 為什麼會在跳出函數之後,卻依舊可以被vector正常讀取? 還是說,push_back()這個動作,是複製一份同等的資料結構進去 所以不管是否為local variable,皆可正常存取 還請各位指點一下這個觀念,謝謝 -- ˍˍ 極目冷眼笑蒼雲 ▕寂寞▏ 寂寞一生傲天穹 ▕侯印▏  ̄ ̄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.3.81 ※ 編輯: godman362 來自: 122.118.3.81 (10/01 16:07)
QQ29:就是你說的copy阿 你丟的是值不是位址 沒有local這問題 10/01 16:27
redsox:yes, 就是copy的動作;若改成pointer應該就會當了 10/01 16:28
godman362:原來如此,謝謝兩位的指點 10/01 16:30