Re: [問題] operator=裡呼叫destructor
※ 引述《kwpn (ITSST)》之銘言:
: 除了copy assigment可以用copy and swap idiom,
: move assignment也可以用。
: A::A(const A &rhs)
: : vec()
: {
: vec.reverse(rhs.vec.size());
: for (auto &val : rhs.vec)
: {
: vec.push_back(new int(*val));
: }
: }
: A::A(A &&rhs) noexcept
: : vec(std::move(rhs.vec))
: {
: }
: A& A::operator=(A rhs)
: {
: swap(rhs);
: return *this;
: }
: void A::swap(A &rhs) noexcept
: {
: std::swap(vec, rhs.vec);
: }
小弟不太嫩, PTT 首 PO.
相對於其他支援 exception 的語言, C++ 要求 programmer 對 exception 更有 sense,
更敏感.
出個小作業給有興趣的朋友一起玩玩: 怎麼修改可以達成 exception safety?
提示: (Updated) 如果沒有 reserve, 有兩個地方在發生 exception 的時候會 leak. 反之只有一個
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.36.252
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1416988399.A.517.html
→
11/26 16:58, , 1F
11/26 16:58, 1F
→
11/26 17:25, , 2F
11/26 17:25, 2F
→
11/26 17:34, , 3F
11/26 17:34, 3F
→
11/26 17:37, , 4F
11/26 17:37, 4F
推
11/26 17:40, , 5F
11/26 17:40, 5F
推
11/26 17:44, , 6F
11/26 17:44, 6F
→
11/26 17:47, , 7F
11/26 17:47, 7F
→
11/26 17:47, , 8F
11/26 17:47, 8F
→
11/26 17:53, , 9F
11/26 17:53, 9F
→
11/26 17:55, , 10F
11/26 17:55, 10F
→
11/26 18:00, , 11F
11/26 18:00, 11F
→
11/26 18:01, , 12F
11/26 18:01, 12F
→
11/26 18:02, , 13F
11/26 18:02, 13F
※ 編輯: fr3ak (60.251.36.252), 11/26/2014 18:06:17
→
11/26 18:09, , 14F
11/26 18:09, 14F
→
11/26 18:17, , 15F
11/26 18:17, 15F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):