Может ли условный оператор привести к менее эффективному коду?

Может ли ?: привести к менее эффективному коду по сравнению с if / else при возврате объекта?

Foo if_else()
{
    if (bla)
        return Foo();
    else
        return something_convertible_to_Foo;
}

If bla ложно, возвращаемый Foo напрямую сконструирован из something_convertible_to_Foo .

Foo question_mark_colon()
{
    return (bla) ? Foo() : something_convertible_to_Foo;
}

Здесь тип выражения после return - Foo , поэтому я предполагаю, что сначала создается временный Foo , если bla имеет значение false, чтобы получить результат выражения, а затем этот временный объект должен быть сконструирован для копирования, чтобы вернуть результат функции. Правильно ли этот анализ?

9
задан fredoverflow 5 August 2011 в 13:41
поделиться