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의 오류가 모든 종류의를 생성합니다.
왜 함수에서 참조를 반환하겠습니까? –
@JamesMcLaughlin 이것은 더 큰 또는 더 적은 기능을 가진 샘플 코드 스 니펫 일뿐입니다. – GradGuy
하지만 왜 복식을 참조로 전달합니까? 기본 유형의 경우 일반적으로 값을 전달하는 것이 빠릅니다. –