Scott Meyersの "Effective C++"項目26:可能な限り長い変数定義を延期すると、代入のコストは確実にコンストラクタとデストラクタのペアより小さくなりません。割り当てのコストがコンストラクタとデストラクタのペアよりも小さくなることが保証されないのはなぜですか?
異なるデータ型またはクラスの場合、代入のコストをコンストラクタとデストラクタのペアと比較するにはどうすればよいでしょうか。
私の意見では、コンストラクタとデストラクタのペアはメモリの割り当てと割り当てを解除する必要があり、コンストラクタは少なくとも変数を初期化します。しかし、代入は変数の値を変更するだけです。
したがって、私は一般に、割り当てのコストはコンストラクタとデストラクタのペアよりも小さくする必要があると思います。
誰がコンストラクタは常にメモリを割り当てる必要がありますか? 'int'の値を変更することは、' int'を構築するよりもコストが安いことをどのように保証しますか? 'int'を保証することができない場合、' int'メンバを持つ単純な型の場合、それをどのように保証しますか? –
関数内にオブジェクトを作成し、それを返してからA)既存の変数に代入するか、B)新しい変数を作成すると、戻り値の最適化のためにB)が速くなる可能性があります。 – dyp
"*コンストラクタとデストラクタのペアはメモリを割り当てたり解放したりする必要があります。たとえば、[RAIIロックホルダー](http://en.cppreference.com/w/cpp/thread/lock_guard)に割り当てられているメモリが必要なのはなぜですか? –