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