C++ 使用「&&引用;类实例化中的符号

C++ 使用「&&引用;类实例化中的符号,c++,C++,如果我有一个类Foo并创建一个实例bar,那么&在下面的代码中是什么意思 Foo& bar = Foo(); Foo&bar表示bar是对Foo对象的引用。然而,我认为编译器会为这一行大喊,因为临时不能绑定到非常量引用。它使bar成为对右侧的引用,而不是它的副本 默认情况下,C++类和结构是按值传递的,这意味着它们是在赋值时复制的。如果要通过引用使用它们,可以使用&thing或指针(带*)。您通常也需要多态性的指针。仅供参考,这会导致编译错误,因为您试图在代码中使用右值初始化引用,如果

如果我有一个类
Foo
并创建一个实例
bar
,那么
&
在下面的代码中是什么意思

Foo& bar = Foo();

Foo&bar
表示bar是对Foo对象的引用。然而,我认为编译器会为这一行大喊,因为临时不能绑定到非常量引用。

它使bar成为对右侧的引用,而不是它的副本


默认情况下,C++类和结构是按值传递的,这意味着它们是在赋值时复制的。如果要通过引用使用它们,可以使用&thing或指针(带*)。您通常也需要多态性的指针。

仅供参考,这会导致编译错误,因为您试图在代码中使用右值初始化引用,如果它已编译,那么它的意思是。如果编译器允许,原因可能是
Foo()
创建了一个临时对象,然后将
bar
作为对该临时对象的引用。一旦临时对象被销毁(基本上是立即销毁),您就有了一个对不再存在的对象的错误引用。@JoachimPileborg这是唯一的UB,因为标准没有说明如果将对象绑定到非常量引用会发生什么。在常量引用(
Foo const&bar=Foo();
)的情况下,行为实际上是定义良好的,并且临时变量的生存期被延长以匹配引用的生存期。