-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
14.3 / 3:50 질문있습니다
24.04.25 10:16 작성 조회수 49
1
throw Exception();
위에서 익명객체를 throw했습니다.
제가 알기로는 익명객체는 rvalue로,
주소값이 없는걸로 알고 있는데,
이를 참조로 받을 수 있는 이유가 궁금합니다.
답변을 작성해보세요.
2
Soobak
2024.04.25
안녕하세요, 질문&답변 도우미 Soobak 입니다.
예외 처리에서 예외가 던져질 때 생성되는 익명 객체의 생명은 catch
블록에서 참조로 받고, catch
블록이 종료될 때까지 연장됩니다.
이는 C++ 표준에 따른 예외 처리 중 익명 객체에 대한 규칙입니다.
즉, 예외를 던질 때 익명 객체를 사용하는 경우, 이 객체를 임시적으로 메모리에 저장하고, catch
블록에서 해당 객체를 참조하여 예외를 처리할 수 있도록 합니다.
첨부드리는 링크의 14번 주석을 참고해보시면 도움이 되실 것 같습니다.
https://timsong-cpp.github.io/cppwp/except#handle-14
답변 1