C++11を使い始めて移動コンストラクタ(Move constructor)、移動演算子(Move assignment operator)というものがあることを知りました。
処理効率が良くなるという説明が散見されたので、知ってからは常に「移動コンストラクタを定義する」よう心がけてきたのですが、慣れてくると「このクラスで定義するのは無駄なんではないか?」と思うことが多くなってきました。
今は、C++11の移動演算子および移動コンストラクタは、次の条件が成立するなら定義しなくても良いと思っているのですが、これは概ね正しい理解と言えるでしょうか?
- 条件1:クラスには、コピーするのに負荷が大きい(※1)メンバ変数がある
- 条件2:クラス(のインスタンス)は、代入されることがあるためコピー演算子やコピーコンストラクタを持つ
※1:時間がかかる、生成回数に制限がある等
もし間違った考えならばご指摘いただきたくよろしくお願いいたします。
又、他に良い指標(移動演算子を定義すべきか否か)があればご教授ください。
今となっては、両者が成立することなんてめったに無いので、移動コンストラクタや移動演算子を定義することはめったに無いはずだと思っています。
以上
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/26 04:34