Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 임시 객체의 생성과 수명
- - 이름이 있을 경우는 함수 {}을 벗어날때
- - 이름이 없을 경우 문장의 끝(;)
- 임시 객체의 특징
- - Lvalue가 될 수 없음.
- - 주소를 구할 수 없음.
- - 참조로 참조 할 수 없음.
- -> obj& o = obj()
- g++ compiler에서는 error가 나지만 ms에서는 error가 나지 않으나 정상동작하지 않음.
- - const 참조로 참조 할 수 있음.
- 임시객체의 수명이 선언변수와 동일해 짐.
- - Rvalue 참조로 참조 할 수 있음.
- 임시 객체와 함수 인자
- - 외부 객체 선언 후 함수 인자로 전달 시 불필요한 생성자 호출 발생.
- - 임시 객체로 함수 인자로 전달 시 해당 불필요한 호출 미발생.
- - 인자는 const 참조로 선언.
- 임시 객체와 함수의 리턴
- - RVO : 특정 객체를 생성하여 리턴.
- - NRVO : return문 이전에 생성한 객체를 리턴.
- 참조 리턴과 값 리턴
- - 값으로 함수 리턴 시 임시 객체 생성.
- - 참조 리턴 시 임시 객체가 생성 되지 않고 참조만 함.
- 임시객체 생성되는 경우에 대한 예외
- - static_cast, reinterpret_cast, dynamic_cast 형변환 할 때
- 하지만 참조 캐스팅 변환시 임시 객체 생성 안됨.
- 임시객체와 멤버 함수
- - 임시 객체가 멤버 함수를 호출 시 Lvalue, Rvalue 함수를 지정 할 수 있음
- int foo() &
- -> Obj o; o->foo();
- -> int& a = o->foo();
- int foo() &&
- -> obj()->foo();
- -> int&& a = obj()->foo();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement