問題タブ [rvalue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - c++: 関数の左辺値または右辺値
このページを読んで c++11 の右辺値参照について学び始めたばかりですが、最初のページで行き詰まりました。これが私がそのページから取ったコードです。
- なぜ
foo()
左辺値なのですか?基本的に左辺値をfoo()
返すためですか?int&
- なぜ
foobar()
右辺値なのですか?foobar()
返品するからint
ですか? - 一般に、関数が右辺値であるかどうかを気にするのはなぜですか? その記事の残りの部分を読めば、これに対する答えが得られると思います。
c++ - 左辺値を右辺値として変換する方法
ここで、左辺値を右辺値としてどのように機能させることができますか?これがばかげた質問であることは知っていますが、右辺値と左辺値の概念を明確にしたいと思います。
c++ - C++11で可変値を返す
メソッドにr値を返すようにすることについて考えていました。具体的には、オーバーロードされた演算子を使用してこれを行う方法があるかどうか疑問に思いました。私はこのコードを持っています:
どうすればこれを変更して、何かを次のような効果に使用できるようにすることができますか
C ++ 11での右辺値参照について聞いたことがありますが、それらは潜在的な解決策になる可能性がありますか?
編集:実際のコードを挿入する方法を見つけました。
c++ - OS X で、単純な C++ プログラムが正しくない結果を返す (コマンドライン オプション 'c++03' と 'c++11' の結果)
この単純なプログラム (Linux でコンパイルされた場合) は、コンパイルされているかどうかに基づいて、2 つの異なる答えを正しく返します-std=c++0x
。
問題: OS X (Mountain Lion、10.8 SDK) で同じことを再現できません。私は何が欠けていますか?
私が何を意味するかを確認するには、次のようにします (最初に Linux で、それがどのように機能するかを確認するためだけに):
1 つ目は 16 進アドレスを出力し、2 つ目は "Hello" を出力します。これは正しい動作です。これは、演算子<<
が 2 つの異なるものに解決されるためです (C++03 には右辺値参照がないため、これで終わりです)。
次に、OS X で同じことを試してください。
(これにより、16 進出力が正しく生成されます。)
(おっと...まだ 16 進数の出力です...C++11x モードですが、正しいヘッダーが使用されていない可能性がありますか?)
注: コンパイラのバージョンは次のとおりです。
注: これは C++ 自体の問題ではなく、OS X ビルドの問題です。興味のある方のために、C++03 と C++11 で異なる結果が生成される理由は、以下の回答の 1 つで強調表示されています。
c++ - C++ コンストラクタの問題
c++
(gcc
最新バージョン)の奇妙な動作のように思われるものについて、誰かが助けてくれるのではないかと思います。以下は、適切なコンストラクターがないためにコンパイル時エラーが発生すると予想される場合に、正常にコンパイルされるコードです。誰が何が起こっているのか説明できますか?
}
の関数を呼び出そうとするとclass A
、コンパイル時エラーが発生します。
結果:
ありがとう!
php - PHPは右辺値としてインクルードしますか?
include
次の例のように、php を Rvalue として使用できるかどうか疑問に思います。
いくつかの実験をしましたが、それは不可能のようです。
この方法でロードしたいphpファイルは、var_export()
関数で保存されたオブジェクトと配列のキャッシュされたダンプです。
PHP の内部コード キャッシング システムを最大限に活用するには、通常のファイル操作ではなくimport
(または) を使用してこれらのファイルをロードすることが非常に重要です。require
c++ - C ++ 11-左辺値によって関数に渡された右辺値を返しますか?
C ++ 11では、参照によって左辺値を関数に渡すのが一般的な方法です。
ただし、右辺値参照によって関数に値を渡し、左辺値によってこの値を返すことは可能ですか?
なぜそれが可能なのか、それとも不可能なのか?
c++ - rvalued-stl-container の element-getters が左辺値を返すのはなぜですか?
rvalued stl コンテナーを処理する必要があるコードがあります。私の質問は、次のように、なぜメンバー関数が rvalued-stl-container から要素を返すのかということです。
右辺値ではなく左辺値を返しますか? 標準は、右辺値オブジェクトのメンバーが右辺値であることを指定します。返された要素を明示的に移動できることを知っていstd::move
ます。しかし、戻り値が明らかに右辺値である場合、左辺値の戻り値の型を持つロジックは何ですか?
そのような式を値オーバーロード関数の引数として使用すると、間違ったオーバーロードが選択され、呼び出された関数が左辺値参照を取得します (すぐにぶら下がります)。
c - 左辺値に関する次の 5 つのステートメントのうち、正しいものはどれですか?
次のパズルをしています。私が正しい答えを選んでいるかどうか、誰かがチェックしてくれるかもしれません。見てください。
次のうち、左辺値について正しいステートメントはどれですか?
1 左辺値は、long int 型の数量を含む算術演算の結果です。
2 すべての左辺値は、割り当てステートメントの右側で使用できます。
3 左辺値は、定義上、割り当てステートメントの右端に現れる値です。
4 定義上、左辺値はポインターによって間接的に参照される記憶域です。
5 左辺値は、シフト演算子の左側に表示できる任意の量です。
わかりました、左辺値はメモリ内のオブジェクトへの参照です。したがって、一見すると4番目の答えを思いつきましたが、左辺値はストレージ自体ではないため、今では正しいものではないようです(そして答え4はそれを意味します)。# その場合、左辺値は代入演算子の左側と右側で使用できるため、答え 2 は正しいと考えています。どう思いますか?
c++ - 左辺値を右辺値に渡します
小さな「ブロッキングキュー」クラスを作成しました。enqueue
メンバー関数に渡される値の冗長コードを作成したことにイライラします。
正確に同じことを行う2つの関数を次に示します(右辺値がstd :: moveを使用して右辺値を実際のキューコレクションに移動することを除く)。ただし、左辺値と右辺値をそれぞれ処理します。
私の質問は、右辺値参照のサポートを失うことなく、これら2つの関数を組み合わせる方法があるかどうかです。