예를 들어
class Point
{
private:
int x;
int y;
public:
....
void ShowPosition() const
{
....
}
....
};
Point& Func()
{
Point temp;
return temp;
}
int main()
{
....
Func().ShowPosition(); // 함수에서 선언된 객체는 함수를 나가면 소멸한다고 하는데 이거 가능함 ?? 만약 가능하면 Func()로 반환된 객체는
얼마나 생존 가능?
....
}
불가. (이론적으론) 리턴하자마자 바로 뻑날 걸. 실제로는 리턴 직후 어느 정도까진 살아있을 수도 있긴 하겠다만.
이런 류의 버그는 그게 무서운 거다. 될 땐 되고 안될 땐 안되는 거.
그럼 지역에서 선언된 객체는 참조형으로 반환하면 안되겠네요??
그리고 그럼 저 반환형이 그냥 Point여도 안되나요?
괜히 그런걸로 고민하지 말고 저렇게 쓰려면 레퍼런스 말고 그냥 벨류로 리턴해 RVO가 적용될거임
ㅋㅋㅋㅋ/ RVO 가 뭔에요?
SVO는 안다에요? - DCW
다중스레드 문제 없으면 static 써도 되고
@나작소 : Return Value Optimization, C++ 11 쓸수 있는 환경이면 걍 move semantics 이용해서 걍 잘 될거임..
뭐 사실 C++11 이전 컴파일러도 RVO를 이용해서 걍 비슷하게 잘 처리됐긴함..
누가 글 잘 써놨넹..
http://blog.knatten.org/2011/08/26/dont-be-afraid-of-returning-by-value-know-the-return-value-optimization/
임시객체맨!
http://autogram.tk/이
중고차 어플리케이션 어떤가요?