[問題] vector的push_back?

看板C_and_CPP作者 (幸福!)時間14年前 (2010/05/17 17:05), 編輯推噓0(0020)
留言20則, 5人參與, 最新討論串1/1
請問一下vector的push_back一些問題,例如我自定一個class A,然後再 建立一個pool,用vector存,如下所示: class A { public: A() {} ~A() {} private: int m_test; } 然後main裡: vector<A> pool_a; A a1; pool_a.push_back(a); 然後我做了copy constructor和operator=: public: A(const A& rhs) { ....; } A& operator= (const A& rhs) { ...; } 我想問的是,push_back會到copy constructor裡,但不會到operator=, 如果我把operator=拿到private,complier又會跟我說operator=無法存取 private成員,請問是為什麼呢? --

11/02 21:11,
我在香港迪士尼有遇到邱淑貞 和她坐同艘船~搞到最後 我
11/02 21:11

11/02 21:12,
就射出來了
11/02 21:12

11/02 21:12,
們都在看她 沒有人聽解說人員講話~~她本人人超好~~一聽
11/02 21:12

11/02 21:13,
就射出來了
11/02 21:13

11/02 21:12,
到我們是台灣來的 就很開心的和我們合照~~後來去廁所又
11/02 21:12

11/02 21:13,
射出來了
11/02 21:13
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.227.34

05/17 17:28, , 1F
我不想說為什麼,因為什麼時候用什麼跟你編譯環境相依。
05/17 17:28, 1F

05/17 17:31, , 2F
喔喔~~
05/17 17:31, 2F

05/17 17:33, , 3F
你唯一需要知道的是,照 spec 寫程式。
05/17 17:33, 3F


05/17 17:33, , 5F
看看 Associated types 那個表格的 Value type 那一列。
05/17 17:33, 5F

05/17 17:34, , 6F
如果你懶得看 STL 相關的書把 concepts 弄清楚的話,
05/17 17:34, 6F

05/17 17:35, , 7F
你就記得把任何東西塞進容器都要實作那兩個東西就好了。
05/17 17:35, 7F

05/17 17:37, , 8F
每套 STL 實作品可以依照自己的喜好選擇是否要用它,
05/17 17:37, 8F

05/17 17:37, , 9F
以及什麼時機要用它,但標準就要求你想用就必須提供。
05/17 17:37, 9F

05/17 17:56, , 10F
簽名檔害我笑不停....XD
05/17 17:56, 10F

05/17 20:34, , 11F
我想是因為template展開的時候有用到operator=()...
05/17 20:34, 11F

05/17 20:35, , 12F
雖然你沒有call到他 但是template有用到
05/17 20:35, 12F

05/18 07:53, , 13F
有用到但不會跑進去喔?
05/18 07:53, 13F

05/18 08:55, , 14F
? `有用到不會跑進去`? 這句中文我看不懂
05/18 08:55, 14F

05/18 09:06, , 15F
唔.寫的不好,就是既然有call到,怎麼不會進入到我實際
05/18 09:06, 15F

05/18 09:07, , 16F
撰寫的operator= ,我有設中斷點來觀查,但從沒進去過
05/18 09:07, 16F

05/18 09:22, , 17F
05/18 09:22, 17F

05/18 14:10, , 18F
應該是偶爾使用copy ctor如果有改變大小時就有機會用到op =
05/18 14:10, 18F

05/18 15:00, , 19F
C++ 不是直譯式語言。就算沒 run 到也是會編進去,
05/18 15:00, 19F

05/18 15:00, , 20F
只是 class template 的規則比較特殊。
05/18 15:00, 20F
文章代碼(AID): #1ByGRGmY (C_and_CPP)