참조변수 2. 이번에는 임시객체(temporary object)를 최소화 하기 위해 사용되는 경우를 정리 하겠습니다.
struct Data {
int a, b;
};
Data d ={1,2);
Data test() // Data개체를 넘기게 됩니다.
{ return d; }
int main()
{
test().a = 10
// d.a 는 어떤값을 가지게 될까요.? 이값은 그냥 1입니다.
위에 내용은 정상적으로 컴파일되지만, 문제는 test()에서 넘어오는 Object가
임시객체이기 때문입니다. test().a =10에서 사용되고 Destroy됩니다.
test()함수에서 return d;는 임시객체를 만들고 전달하게 됩니다.
이런 임시객체는 성능과 Memory에 좋치 않습니다.
아래와 같이 적용하면 임시객체를 사용하지 않게 됩니다.
Data& test() { return d; }
또한 d.a는 10으로 Update되게 됩니다,
' Software > C++' 카테고리의 다른 글
C++ 스마트포인터 참조금지, 대입금지 (0) | 2016.08.21 |
---|---|
C++ Smart Pointer 참조계수 기반 (0) | 2016.08.21 |
C++ 참조변수-1 (0) | 2016.07.30 |