1. ホーム
  2. c++

[解決済み] boost::noncopyableの利点は何ですか?

2022-02-13 12:22:55

質問

クラスのコピーを防止するために、プライベートコピーコンストラクタや代入演算子を宣言することは非常に簡単です。しかし boost::noncopyable .

この場合、boostを使用するメリット/デメリットは何ですか?

どのように解決するのですか?

他の人の意見をまとめる。

のメリット boost::noncopyable プライベートコピーメソッドより :

  1. より明示的で説明的な意図を持っている。プライベートコピー関数の使用は、次のようなイディオムです。 noncopyable .
  2. コードが少ない/タイピングが少ない/ごちゃごちゃしていない/ミスの余地が少ない(一番簡単なのは、誤って実装を提供してしまうことでしょう)。
  3. C#の属性と同じように、型のメタデータに意味を埋め込むことができる。コピー不可能なオブジェクトだけを受け取る関数が書けるようになる。
  4. ビルドプロセスの早い段階でエラーを検出する可能性があります。クラス自身やクラスの友人が誤ったコピーをしている場合、エラーはリンク時ではなくコンパイル時に表示されます。
  5. (#4 とほぼ同じ) クラス自身やクラスの友人がプライベートなコピーメソッドを呼び出さないようにします。

プライベートコピーメソッドの利点 boost::noncopyable :

  1. ブースト依存なし