2

这是 c++ 中未定义的行为吗?

#include <iostream>

const double& abs(const double& x){
    return x>0 ? x:-x;
}

int main () {

    double x = -10.0;
    double y = abs(x);

    std::cout << y << std::endl;

    return 0;
}   

g++不喜欢:

mem.cpp: In function ‘const double& abs(const double&)’:
mem.cpp:4: warning: returning reference to temporary

valgrind 会产生各种错误。

4

1 回答 1

1

是的。三元运算符的结果是暂时的,一旦您从函数返回,它将不复存在。

于 2012-08-30T19:09:45.410 回答