→ james732:我會改用 vector 或 list 當作容器 會比較安全 10/19 09:01
這是因為需求指定不能用 vector 與 list …
→ james732:其實我覺得你用 new [] 不是搭配 delete [] 就很怪..... 10/19 09:02
因為我並不想重作整個Class陣列,希望能夠單獨刪除其中的一筆資料就好。
推 jonastan:那你內文中所謂新增資料的意思是...? 10/19 09:11
Class中有幾個成員 → int Phone ;
所謂的新增資料,其實就只是把資料填到裡面而已。
EX: A[0].setPhone("0123456789");
通常在 Delete A[n] 後,
我會補上 &A[n] = new Member();
但是不補上似乎也是正常,這邊我就不是很清楚 delete的實作方式了。
※ 編輯: KanoLoa 來自: 122.116.45.36 (10/19 09:19)
→ james732:這樣混用 new [] 與 delete 跟 new 感覺就很容易出事..XD 10/19 09:36
→ loveme00835:&A[n] = new Member(); 這行是沒有作用的...delete 就 10/19 09:38
→ loveme00835:是還會呼叫每一個物件的解構子, 才來釋放記憶體, 你已 10/19 09:39
→ loveme00835:經先刪掉的話, 它再呼叫就變成刪兩次 10/19 09:40
→ KanoLoa:謝謝 !! 10/19 09:49
推 loveme00835:如果真的不得已要這樣做, 你可以參考std::Allocator 10/19 09:54
→ loveme00835:需要在一塊記憶體上即地建構/摧毀物件的時候可以用到 10/19 09:55
→ loveme00835:不過你要提供copy ctor, 另一個方法就是用replacement 10/19 09:56
→ loveme00835:new, 跟 A[n].~Class() 來作, 不過都是需要非常小心就 10/19 09:56
→ loveme00835:是 10/19 09:56
→ KanoLoa:如果變成這樣實在太慘了,甚至有本末倒置的感覺。 10/19 09:58
→ loveme00835:所以其實我才不管什麼爛需求...只要我有理由說出他爛, 10/19 10:00
→ loveme00835:打死我都不會照他的做 10/19 10:00
→ KanoLoa:嗯 我剛去抗議了,現在他應該很困擾 哈哈哈 10/19 10:05
推 purpose:Allocator,第一次知道有這東西 10/19 10:09