我知道 C++ 只允许右值或临时对象绑定到常量引用。(或类似的东西......)
例如,假设我有功能doStuff(SomeValue & input)
并 SomeValue getNiceValue()
定义:
/* These do not work */
app->doStuff(SomeValue("value1"));
app->doStuff(getNiceValue());
/* These all work, but seem awkward enough that they must be wrong. :) */
app->doStuff(*(new SomeValue("value2")));
SomeValue tmp = SomeValue("value3");
app->doStuff(tmp);
SomeValue tmp2 = getNiceValue();
app->doStuff(tmp2);
所以,三个问题:
由于我不能随意更改
doStuff()
or的签名getNiceValue()
,这是否意味着我必须始终使用某种“名称”(即使是多余的)来传递我想要传递给的任何东西doStuff
?假设,如果我可以更改函数签名,这种事情是否有共同的模式?
新的 C++11 标准会改变一切吗?C ++ 11有更好的方法吗?
谢谢