- 769 名前:はちみつ餃子 mailto:sage [2024/01/28(日) 16:52:54.16 ID:hRRbWEE/.net]
- >>767
デフォルトで生成される代入演算子は全てのサブオブジェクト (基底とデータメンバ) を 代入演算子でコピーするのと同じ挙動になることになってる。 基底やデータメンバが適切に代入演算子を定義されているのならデフォルト生成にまかせてよいことが多い。 注意を払う必要がある典型的なものは生ポインタで、 ポインタをコピーしても指してる先のオブジェクトはひとつだから そのへんの扱いはデフォルト生成だとあかんことになる。 あとは外部のリソースと結びついているオブジェクトだと単純にコピーできないか、コピーさせないこともあるな。 分かりやすい例で言うなら std::thread なんかはスレッドを抽象化したものだけど オブジェクトをコピーしたらスレッドもぽんぽん増えるなんてことになっても困るし スレッドひとつに対応しているオブジェクトがいくつもあるようでも困るのでコピーできないようになってる。 それぞれに事情があるので明瞭な判断基準があるわけじゃないけど、 デフォルト生成の結果がほんまに自分の意図通りに動作するか考えてみて あかんなら自分で書くしかない。
|

|