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


&& 是 C++11 标准中定义的一个新的引用运算符。int&& a 表示“a”是一个右值引用。&& 通常仅用于声明函数的参数。它仅接受右值表达式。

简单来说,右值是没有内存地址的一个值。例如,数字 6 和字符“v”都是右值。int a,a 是一个左值,但 (a+2) 是一个右值。

 示例

void foo(int&& a)
{
   //Some magical code...
}
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-2.aspx 了解更多关于右值和这个运算符的信息。


更新日期:2020 年 2 月 11 日

18K+ 次查看

开始你的职业生涯

完成课程获取认证

开始学习
广告
© . All rights reserved.