【发布时间】:2015-07-14 12:24:13
【问题描述】:
这是一个已知的特殊情况,如果将常量引用分配为常量引用,则它们不会在返回值中丢失:
int MyFunction()
{
int x = 5;
return x;
}
int main()
{
const int& y = MyFunction();
std::cout << "This is valid: " << std::endl;
return 0;
}
现在,如果我有如下两个函数:
int MyFunction()
{
int x = 5;
return x;
}
void MyOtherFunction(const int& val)
{
std::cout << val << std::endl;
}
int main()
{
MyOtherFunction(MyFunction());
}
这是否符合标准?传递 const 引用有什么限制?
【问题讨论】:
-
是的,它有效,您可以将临时对象绑定到常量引用。限制是你不能修改
val。 -
是的。如果您愿意,也可以绑定到非常量右值引用。
-
@CoffeeandCode:当然可以。您可以将其绑定到右值 ref,或者您可以安全地将
const_cast与const绑定。
标签: c++ function reference constants