在变量中返回之前存储值

时间:2013-02-25 22:58:56

标签: c++ coding-style return return-value

这是一段代码:

bool EqualsA(const Foo& a, const Foo& b)
{
    return a == b;
}

bool EqualsB(const Foo& a, const Foo& b)
{
    const bool result = a == b;

    return result;
}

int MethodA()
{
    return GetValue() * GetOtherValue();
}

int MethodB()
{
    const int result = GetValue() * GetOtherValue();

    return result;
}

我想知道以这两种不同的方式返回值是否有任何不同(即时返回或存储结果变量)。我认为存储更适合调试,但有任何性能损失(我认为没有)或任何其他利弊使用其中之一。

2 个答案:

答案 0 :(得分:4)

编译器可以自由地优化局部变量,因此性能将是相同的。

在很多代码分析工具中,这被标记为代码气味,我倾向于同意。 Debuggers can be made to see the return value on the stack所以本地变量不买任何东西。

答案 1 :(得分:3)

在合理的假设下,operator ==类型的对象的Foo的所选重载返回的值是bool类型,一个体面的编译器会在重的时候优化你的临时存储使用了优化选项,因此与性能无关,无关紧要

我的建议是选择能让您的代码更易读或更便于维护或调试的表单。