[過去ログ] 【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
8(3): デフォルトの名無しさん [] 2017/07/21(金) 00:50:30.03 ID:cbDQlmdo(2/6) AAS
moveコンストラクタを作ったら気づくと思うが、処理内容は結局コピーコンストラクタと同じなわけ
とどのつまり、ポインタをメンバーに持ったクラスを定義する時に有効なんだよ
コピーコンストラクタ(lvalue)だと、コピー元は存在し続ける可能性があるから、
必ず1から全データを作り直して、ポインターのポイント先を新データにしないといけない
でも、rvalueで捨ててもいいデータだと分かっていたら、捨てるデータを捨てずにそのまま使って
ポインタのポイント先をその捨てるデータにすればよいから、楽で速いよねという話
10(1): デフォルトの名無しさん [sage] 2017/07/21(金) 01:02:33.71 ID:joLx1qFD(2/5) AAS
>>8
いや多分そういうことじゃなくて、分からないのはC++の文法的なトリックの部分に関してだと思う
右辺値参照として宣言した変数を参照したら左辺値になるとか
なかなかにクラクラする部分もあるので
11: デフォルトの名無しさん [] 2017/07/21(金) 01:04:55.21 ID:kH4Xa8wr(1) AAS
みなさんありがとうございます
取り敢えず>>77(3): デフォルトの名無しさん [] 2017/07/21(金) 00:25:40.36 ID:cbDQlmdo(1/6) AAS
・見分け方
lvalueは、名前がある
rvalueは、名前がない
・rvalueの特徴
名前がないということは使い捨ての一時的なオブジェクトだから、処理が終わったら捨てられる
・使い分けの理由
代入演算子(=)や、関数の戻り値に使う時や、vectorなどのコンテナに放り込む時には、
一旦オブジェクトがコピーされるが、rvalueだと分かっていたら、勝手にmoveしてくれるので処理が速い
特に、でかいデータを持った独自のクラスの場合にコピーよりmoveが速くなる
この機能を使いたかったら、クラスのmoveコンストラクタとmove代入演算子(=)を定義しておくこと
でも、それは面倒だろうから、ある条件を満たしたらコンパイラが勝手に作ってくれる
・条件
独自クラスに次のいずれの定義もしていないこと
a) コピーコンストラクタ
b) コピー代入演算子
c) デストラクタ
C++歴1ヶ月の俺が答えてみるテスト
>>8さんのレスを参考に
>>9さんのURLを見て寝ようと思います
迅速な回答ありがとうございました (^○^)
21: デフォルトの名無しさん [sage] 2017/07/21(金) 08:43:30.27 ID:xjFWQMIy(1) AAS
>>1919(1): デフォルトの名無しさん [] 2017/07/21(金) 07:53:53.57 ID:cbDQlmdo(6/6) AAS
お勧め本の提示ができないばかりか、自分の言葉で説明もできずにただただ罵るだけ
突っ込まれると粗探しをし始める
まぁ、本当に理解してる人間がこんなスレ覗く暇ないわな
> お勧め本の提示ができない
>>9の最初のリンクで充分だろ
自分の言葉でとか言うがそこそこ大きな概念だから説明がまともだったとしてもこんなところでとうとうと説明されても困るし>>7-8みたいな中途半端な説明は有害なだけだし
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.037s