什么是C ++中的双地址运算符(&&)?

&&是C ++ 11标准中定义的新引用运算符。int && a表示“ a”是r值参考。&&通常仅用于声明函数的参数。而且它只需要一个r值表达式。

简而言之,r值是没有内存地址的值。例如,数字6和字符“ v”都是r值。int a,a是一个l值,但是(a + 2)是一个r值。

 例

void foo(int&& a)
{
   //一些神奇的代码...-
}
int main(){
   int b;
   foo(b);       //Error. An rValue reference cannot be pointed to a lValue.
   foo(5);       //Compiles with no error.
   foo(b+3);     //Compiles with no error.
   int&& c = b;  //Error. An rValue reference cannot be pointed to a lValue.
   int&& d = 5;  //Compiles with no error.
}

您可以在http://blogs.msdn.com/b/vcblog/archive/2009/02/03/rvalue-references-c-0x-features-in-vc10-part-中了解有关R值和此运算符的更多信息。2.aspx