在返回对象时,?:
是否会导致与 if/else
相比效率较低的代码?
Foo if_else()
{
if (bla)
return Foo();
else
return something_convertible_to_Foo;
}
如果 bla
为假,则返回的 Foo
直接从 something_convertible_to_Foo
构造。
Foo question_mark_colon()
{
return (bla) ? Foo() : something_convertible_to_Foo;
}
这里,return
之后的表达式类型是 Foo
,所以我想如果 首先创建一些临时的
为 false 以产生表达式的结果,然后必须复制构造该临时值以返回函数的结果。这种分析合理吗?Foo
bla
最佳答案
一个临时的 Foo
必须以任何一种方式构建,并且这两种情况都是 RVO 的明确候选者,所以我看不出有任何理由相信编译器将无法在这种情况下产生相同的输出案子。一如既往,实际编译代码并查看输出是最好的做法。
关于c++ - 条件运算符会导致代码效率降低吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957238/