相关疑难解决方法(0)

C++ 编译器会优化掉未使用的返回值吗?

如果我有一个返回对象的函数,但调用者从不使用这个返回值,编译器会优化掉副本吗?(可能总是/有时/从不回答。)

基本示例:

ReturnValue MyClass::FunctionThatAltersMembersAndNeverFails()
{
    //Do stuff to members of MyClass that never fails
    return successfulResultObject;
}

void MyClass::DoWork()
{
    // Do some stuff
    FunctionThatAltersMembersAndNeverFails();
    // Do more stuff
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,ReturnValue对象会被复制吗?它甚至被构建了吗?(我知道这可能取决于编译器,但让我们将讨论范围缩小到流行的现代讨论。)

编辑:让我们稍微简化一下,因为在一般情况下似乎没有达成共识。如果ReturnValue是一个 int,我们返回 0 而不是successfulResultObject呢?

c++ compiler-construction gcc return visual-c++

6
推荐指数
1
解决办法
1722
查看次数

标签 统计

c++ ×1

compiler-construction ×1

gcc ×1

return ×1

visual-c++ ×1