0からの、超初心者C++相談室at TECH0からの、超初心者C++相談室 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト772:デフォルトの名無しさん 24/01/28 16:37:46.15 eBJAlicu.net >>765 そうです。 773:はちみつ餃子 24/01/28 16:38:46.52 hRRbWEE/.net >>766 Windows での話か……。 msvcrt だとどうにもならなくて ucrt でちょっとマシになってるみたいな話題をこないだ Teratail で見たぞ。 774:はちみつ餃子 24/01/28 16:52:54.16 hRRbWEE/.net >>767 デフォルトで生成される代入演算子は全てのサブオブジェクト (基底とデータメンバ) を 代入演算子でコピーするのと同じ挙動になることになってる。 基底やデータメンバが適切に代入演算子を定義されているのならデフォルト生成にまかせてよいことが多い。 注意を払う必要がある典型的なものは生ポインタで、 ポインタをコピーしても指してる先のオブジェクトはひとつだから そのへんの扱いはデフォルト生成だとあかんことになる。 あとは外部のリソースと結びついているオブジェクトだと単純にコピーできないか、コピーさせないこともあるな。 分かりやすい例で言うなら std::thread なんかはスレッドを抽象化したものだけど オブジェクトをコピーしたらスレッドもぽんぽん増えるなんてことになっても困るし スレッドひとつに対応しているオブジェクトがいくつもあるようでも困るのでコピーできないようになってる。 それぞれに事情があるので明瞭な判断基準があるわけじゃないけど、 デフォルト生成の結果がほんまに自分の意図通りに動作するか考えてみて あかんなら自分で書くしかない。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch