- 7 名前:デフォルトの名無しさん [2017/07/21(金) 00:25:40.36.net]
- ・見分け方
lvalueは、名前がある rvalueは、名前がない ・rvalueの特徴 名前がないということは使い捨ての一時的なオブジェクトだから、処理が終わったら捨てられる ・使い分けの理由 代入演算子(=)や、関数の戻り値に使う時や、vectorなどのコンテナに放り込む時には、 一旦オブジェクトがコピーされるが、rvalueだと分かっていたら、勝手にmoveしてくれるので処理が速い 特に、でかいデータを持った独自のクラスの場合にコピーよりmoveが速くなる この機能を使いたかったら、クラスのmoveコンストラクタとmove代入演算子(=)を定義しておくこと でも、それは面倒だろうから、ある条件を満たしたらコンパイラが勝手に作ってくれる ・条件 独自クラスに次のいずれの定義もしていないこと a) コピーコンストラクタ b) コピー代入演算子 c) デストラクタ C++歴1ヶ月の俺が答えてみるテスト
|

|