求 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 日

1.8 万+ 查看次数

开启你的 职业 生涯

通过完成课程获得认证

开始
广告