Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. 임시 객체의 생성과 수명
  2. - 이름이 있을 경우는 함수 {}을 벗어날때
  3. - 이름이 없을 경우 문장의 끝(;)
  4.  
  5. 임시 객체의 특징
  6. - Lvalue가 될 수 없음.
  7. - 주소를 구할 수 없음.
  8. - 참조로 참조 할 수 없음.
  9. -> obj& o = obj()
  10. g++ compiler에서는 error가 나지만 ms에서는 error가 나지 않으나 정상동작하지 않음.
  11. - const 참조로 참조 할 수 있음.
  12. 임시객체의 수명이 선언변수와 동일해 짐.
  13. - Rvalue 참조로 참조 할 수 있음.
  14.  
  15. 임시 객체와 함수 인자
  16. - 외부 객체 선언 후 함수 인자로 전달 시 불필요한 생성자 호출 발생.
  17. - 임시 객체로 함수 인자로 전달 시 해당 불필요한 호출 미발생.
  18. - 인자는 const 참조로 선언.
  19.  
  20. 임시 객체와 함수의 리턴
  21. - RVO : 특정 객체를 생성하여 리턴.
  22. - NRVO : return문 이전에 생성한 객체를 리턴.
  23.  
  24. 참조 리턴과 값 리턴
  25. - 값으로 함수 리턴 시 임시 객체 생성.
  26. - 참조 리턴 시 임시 객체가 생성 되지 않고 참조만 함.
  27.  
  28. 임시객체 생성되는 경우에 대한 예외
  29. - static_cast, reinterpret_cast, dynamic_cast 형변환 할 때
  30. 하지만 참조 캐스팅 변환시 임시 객체 생성 안됨.
  31.  
  32. 임시객체와 멤버 함수
  33. - 임시 객체가 멤버 함수를 호출 시 Lvalue, Rvalue 함수를 지정 할 수 있음
  34. int foo() &
  35. -> Obj o; o->foo();
  36. -> int& a = o->foo();
  37.  
  38. int foo() &&
  39. -> obj()->foo();
  40. -> int&& a = obj()->foo();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement