Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Double Address Operator (&&) ใน C++


นิยาม

&& เป็น reference operator ใหม่ในมาตรฐาน C++11 int&& a หมายถึง "a" เป็น r-value reference

ใช้ประกาศพารามิเตอร์ฟังก์ชันเป็นหลัก รับเฉพาะ r-value expression เท่านั้น

R-value vs L-value

  • R-value: ค่าที่ไม่มี memory address เช่นตัวเลข 6, ตัวอักษร 'v', นิพจน์ (a+2)
  • L-value: มี memory address เช่นตัวแปร int a

ตัวอย่าง

void foo(int&& a) {
    // Some magical code...
}

int main() {
    int b;
    foo(b);      // Error: r-value ref ไม่รับ l-value
    foo(5);      // OK: 5 เป็น r-value
    foo(b + 3);  // OK: b+3 เป็น r-value
    int&& c = b; // Error: r-value ref ไม่รับ l-value
    int&& d = 5; // OK: 5 เป็น r-value
}

อ้างอิงเพิ่มเติม

อ่านเพิ่มเติมเกี่ยวกับ R-value references: MSDN blog - Rvalue References: C++0x Features in VC10