c++ - 条件运算符会导致代码效率降低吗?

标签 c++ constructor return-value ternary-operator conditional-operator

在返回对象时,?: 是否会导致与 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,所以我想如果 首先创建一些临时的 Foo bla 为 false 以产生表达式的结果,然后必须复制构造该临时值以返回函数的结果。这种分析合理吗?

最佳答案

一个临时的 Foo 必须以任何一种方式构建,并且这两种情况都是 RVO 的明确候选者,所以我看不出有任何理由相信编译器将无法在这种情况下产生相同的输出案子。一如既往,实际编译代码并查看输出是最好的做法。

关于c++ - 条件运算符会导致代码效率降低吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957238/

相关文章:

c++ - 如何将派生类的 std::list 而不是父类的 std::list 传递给函数?

C++:是否可以创建返回 null 的模板函数?

java - 在构造函数中初始化另一个类的对象

c - 无法在 C 函数中返回 'true' 值

matlab - 如何在不先将函数返回的 MATLAB 数组分配给局部变量的情况下对其进行索引?

c++ - 在指向成员的指针和指向常量成员的指针之间转换

c++ - Friend函数无法构造类的唯一指针

c++ - 在静态变量的构造函数中检索静态常量变量的值

c++ - 为什么在静态创建 obj 时调用私有(private)析构函数

python - 描述编程语言的这个特性