rvalue

    15

    3答えて

    r値が関数間で渡されたときに、C++の動作が不思議でした。この単純なコードで ルック:私はfoo機能を呼び出すためにmove機能を使用する必要がbar関数内だとき #include <string> void foo(std::string&& str) { // Accept a rvalue of str } void bar(std::string&& str) {

    7

    2答えて

    C++ Primerによると、C++の矢印演算子は左辺値を生成します。さらに、左辺値をもたらす式のdecltypeは、参照型になります。だから、次のdecltypeはではなく、という参照型になります。 struct MyStruct { string name }; MyStruct s; s.name = "aname"; MyStruct* p = &s; decltype

    3

    1答えて

    int main() { int x = 1, y = 2, z = 3, w = 4; #define formula x + y * z % w x++; do_something1(formula); y++; do_something2(formula); z++; do_something3(formula);

    1

    2答えて

    ここで、creator()は、私が逆参照してfooに渡すXへのポインタを返します。それは右辺値なので、移動セマンティクスを使用する必要があります。しかし、私はそれを実行すると、私はfoo(X &)が呼び出されることがわかります。 #include <iostream> using namespace std; struct X { int i; }; void foo(X&

    3

    2答えて

    たとえば、ローカルオブジェクトを返すコンストラクタ内の関数を呼び出すクラスがあります。私はrvalue参照を使用してこのオブジェクトへのアクセスを取得しようとしています。 しかし、コンパイラは、参照メンバーが、建設が終了しても保持されない一時的なものに初期化されることを伝えます。 私はそれを取得しません。私は、関数のスコープ内に作成されたローカルオブジェクトは、関数のスコープ内にしか存在しないこと

    0

    1答えて

    Rvalueをコピーコンストラクタまたは代入演算子に渡すことは、私にとっては非常に重要なことです。例えば:このなし int a = b+c; または int a; a = b+c; は数学の計算を行うのは難しいだろう。 私はクラスでこれを行うことができません。ここに私のコードです #include <iostream> using namespace std; struct no

    2

    4答えて

    これが私のC++構文のエラーであるかどうか、またはこれがまったく達成できないものかどうかはわかりません。 std :: mapをコンストラクタ引数として取るクラスを定義します。次に、 "一時的な"(この "rvalue"と呼ぶのに適していますか?)std :: mapを渡して、そのクラスのインスタンスを作成します。私。私はlvalue std :: mapを作成し、それをコンストラクタに渡したくあ

    0

    3答えて

    このコードはなぜ機能しますか?毎回60を出力します。まず、​​3210は、関数が名前のない構造ではなく、既存の変数への参照を返すことを示します。第二に、関数が返ってきたときに一時的に死んではいけません。私は最新のGCCバージョンがOSX上にあるものを使用しています...誰かが私にこの理由を説明してもらえますか? #include <iostream> using namespace std;