본문 바로가기

Software/C++

C++참조변수-2


참조변수 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