Can ?:
与相比,导致代码效率较低if/else
返回对象时?
Foo if_else()
{
if (bla)
return Foo();
else
return something_convertible_to_Foo;
}
If bla
为 false,则返回Foo
直接构造自something_convertible_to_Foo
.
Foo question_mark_colon()
{
return (bla) ? Foo() : something_convertible_to_Foo;
}
这里,后面的表达式的类型return
is Foo
,所以我想首先是一些临时的Foo
被创建,如果bla
为 false 才能产生表达式的结果,然后必须复制构造该临时变量才能返回函数的结果。这样的分析靠谱吗?
一个临时的Foo
必须以任何一种方式构建,并且这两种情况都是 RVO 的明确候选者,因此我认为没有任何理由相信编译器在这种情况下无法产生相同的输出。与往常一样,实际编译代码并查看输出是最好的做法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)