C++ 返回类型是否被视为右值?
只是一个简单的问题,当涉及到返回C++ 返回类型是否被视为右值?,c++,C++,只是一个简单的问题,当涉及到返回&&时,我试图模拟一种不好的做法。我知道这是一种不好的做法 这里有一个例子 //dummy is just an empty class dummy && crashtest(){ dummy temp; return std::move(temp); } int main() { dummy && k = crashtest(); return 0; } 这是一种不好的做法,因为k现在在函数
&&
时,我试图模拟一种不好的做法。我知道这是一种不好的做法
这里有一个例子
//dummy is just an empty class
dummy && crashtest(){
dummy temp;
return std::move(temp);
}
int main() {
dummy && k = crashtest();
return 0;
}
这是一种不好的做法,因为k
现在在函数中保存了对已破坏temp
的引用
我尝试了一种不同的方法,在我的main
中执行类似的操作:
dummy l; //generate temp
dummy && k = std::move(l); //return value
dummy && d = k; // copy
虽然l
不会被真正销毁,但它为什么不让我编译?我得到一个错误,说我试图绑定左值。这和函数中发生的事情不一样吗?根据我的理解,在函数中发生的是:
创建temp->std::move(temp)->返回类型dummy&
接收它->k
与返回类型临时相等
我需要澄清。返回类型是否被视为右值
附加问题:如果右值引用变量与右值引用变量相等,会发生什么情况
&&lhs=&&rhs
,lhs是否接受rhs引用?从函数返回右值引用很可能会导致挂起引用(引用存在,但它引用的临时对象已被销毁)。
在标准中,这实际上被称为xvalue(一个“到期”值)。从函数返回右值引用很可能会导致挂起引用(该引用存在,但它引用的临时对象已被销毁)。
在标准中,这实际上被称为xvalue(一个“到期”值)。从函数返回右值引用很可能会导致挂起引用(该引用存在,但它引用的临时对象已被销毁)。
在标准中,这实际上被称为xvalue(一个“到期”值)。从函数返回右值引用很可能会导致挂起引用(该引用存在,但它引用的临时对象已被销毁)。
这实际上在标准中称为xvalue(一个“到期”值)。对于不同的视图:用
&
替换&
,并删除std::move()
命令。如果你了解这个案例,你也将是你问题中的那个。关于对象的生存期,它是完全相同的。对于不同的视图:将&&
替换为&
并删除std::move()
命令。如果你了解这个案例,你也将是你问题中的那个。关于对象的生存期,它是完全相同的。对于不同的视图:将&&
替换为&
并删除std::move()
命令。如果你了解这个案例,你也将是你问题中的那个。关于对象的生存期,它是完全相同的。对于不同的视图:将&&
替换为&
并删除std::move()
命令。如果你了解这个案例,你也将是你问题中的那个。关于对象的生命周期,它是完全相同的。