引用: Effective C++ 第3版
強い保証をするための、一般的なデザイン方法があるのです。...「コピーと交換(スワップ)」と呼ばれるもので、原理は簡単です。
まず、変更したいオブジェクトのコピーを作ります。それから、そのコピーを変更します。その処理の中で例外が投げられれば、元のオブジェクトは変更を受けないままで処理が終わることになります。
...「コピーと交換」を実現するために、普通は、「オブジェクトのデータを別の実装オブジェクトに入れる」という方法を使います。オブジェクトは、実装オブジェクトへのポインタを保持するようにするのです。これは、しばしば、pimplイディオムとよばれるもので、31項で詳しく説明します。
pimpl(pointer to implementation)は以下の用途で使うというのは本やwebで見てきたが上記の用途にも使えるのか。
- 実装内容をクラス使用者に公開しない
- コンパイル時間の軽減