非常にストレートな質問です。なぜ過負荷演算子=例外安全を行う
class Bitmap {...};
class Widget {
...
private:
Bitmap* pb;
};
オーバーロードされたコピー割り当ての場合、本(Effective C++)は以下のように述べています。下のコードは例外安全です。
Widget& Widget::operator=(const Widget& rhs) {
if (rhs == *this) return;
Bitmap* pOrig = pb; //?? why remember the pb can do exception safety?
pb = new Bitmap(*rhs.pb);
delete pOrig;
return *this;
}
ブックは言った:でも、新しいビットマップ(* rhs.pb)を介して例外を満たし、上記のコードは、例外安全性を行うことができ、PBはNULLへのポインタ、同じことをしませ保つことができますが、どのように、なぜ?誰かが私を助けることができますか?ありがとう!
これは本の正確なテキストですか?それは編集を通してそれを作るテキストのようには聞こえません。可能であれば、*正確なテキスト*を引用してください。 –
*どのような*例外安全*?強い?基本? NoExcept? –
私はこの本は 'rhs == * this'ではなく、'&rhs == this'と言います。 – molbdnilo