rvalue

    1熱度

    3回答

    在C中,有沒有一種方法來識別右值和左值? 其中有些是容易的身份說,在分配,左值是左值,並在右邊的值是右值。 但是其他情況下,使用這種規則進行識別是困難的。 例如:*p++和i++(其中p是指向整數的指針,i是整數) - 如何識別它是右值還是左值? 上下文是++*p++作品而++i++不會因爲i++是一個右值(如告訴嚴重的傢伙)。 如何識別一個表達式右值和左值?

    0熱度

    2回答

    我認爲發生的是由SetVar返回的右值A是與Class相同的副本並共享相同的指針Var。但是當右值調用它的解構器時,它會刪除Class的Val。 class A { private: int* Var; public: A SetVar(int); ~A() { delete Var; } }; A A::SetVar(in

    3熱度

    1回答

    我已經用vs2011編譯了這段代碼。它首先打印構造函數然後複製構造函數。 但是,如果我更改函數返回a而不是ap,它將移動該對象。這是一個錯誤還是爲什麼它的行爲如此? * ap不是右值嗎? struct A { A() { cout << "constructor" << endl;} A(const A&) { cout << "copy constructor " << e

    8熱度

    3回答

    可能重複: Is pass-by-value a reasonable default in C++11? 我讀Want Speed? Pass by Value.由戴維·亞伯拉罕有關複製省略和RVO。我想知道爲什麼我們需要複製elision? 我被告知太多次了,你應該通過const引用傳遞函數參數來避免複製(幾乎所有讀過的C++書都告訴我這個)。 假設我們有兩個功能: int f1(const

    10熱度

    2回答

    如果使用C++ 11編譯器編譯此程序,則矢量不會移出該函數。 #include <vector> using namespace std; vector<int> create(bool cond) { vector<int> a(1); vector<int> b(2); return cond ? a : b; } int main() { v

    0熱度

    1回答

    我不知道是否有可能使用PHP include作爲R值,像這樣的例子: $foo = include('bar.php); 我做了幾個實驗,但它似乎是不可能的。 我想以這種方式加載的php文件是對象和數組的緩存轉儲,使用var_export()函數保存。 爲了充分利用PHP的內部代碼緩存系統,對我來說加載那些文件是import(或require)而不是正常的文件操作是非常重要的。

    2熱度

    1回答

    我剛剛開始通過閱讀this page瞭解C++ 11中的右值引用,但我陷入了第一頁。這是我從該頁面獲取的代碼。 int& foo(); foo() = 42; // ok, foo() is an lvalue int* p1 = &foo(); // ok, foo() is an lvalue int foobar(); j = foobar(); /

    11熱度

    2回答

    考慮下面的代碼: #include <iostream> struct Foo { Foo() : bar(0) {} int bar; }; int main() { Foo foo; ++(foo.bar); std::cout<< foo.bar << std::endl; system("pause");

    0熱度

    2回答

    int x = 8; int y = x ; 在這裏如何左值可以作爲右值?我知道這是一個愚蠢的問題,但我只是想在右值和左值上明確我的概念。

    0熱度

    2回答

    我無法想到將字符串矢量轉換爲賦值語句的右值的有效方法。因此,例如,我有三個元素的向量「5」,「*」,「3」,所以我需要的是一個賦值語句,基本上是等同於提前以下 int myInteger = 5 * 3; 感謝;