일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 오블완
- Smart Pointer
- 다형성
- 예외
- c++
- 상속
- 언리얼
- operator new
- 게임
- 암시적 변환
- Effective c++
- virtual function
- 반복자
- exception
- 영화 리뷰
- resource management class
- 티스토리챌린지
- UE4
- reference
- 메타테이블
- Vector
- lua
- 비교 함수 객체
- 참조자
- implicit conversion
- 영화
- more effective c++
- 스마트 포인터
- effective stl
- 루아
- Today
- Total
목록Destruction (2)
스토리텔링 개발자
항목 11 : 소멸자에서는 예외가 탈출하지 못하게 하자 소멸자가 호출되는 상황객체가 통상적인 조건에서 소멸되었을 때지역변수 객체가 유효범위(scope)를 벗어날 때객체가 직접 삭제(delete)될 때예외 처리 매커니즘에 의해 객체가 소멸되었을 때예외 전파(exception propagation) 과정의 일부분으로 스택 되감기가 진행될 때즉, 소멸자가 호출되었을 때 예외가 발생된 상태인지 아닌지 알 방도가 없다.실은 이제는 std::uncaught_exception을 통해서 예외가 스택 되감기(unwinding) 중인지 알아낼 수 있다. 예외가 소멸자를 빠져나가면 안되는 이유 1소멸자 내부에서 예외 발생 상태인지 구별할 방법이 없다.어떤 상황이든 예외가 발생된 상태라고 가정하고 소멸자를 방어적으로 ..
항목 9. 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 파생 클래스에서 호출되는 기본 클래스 생성자 문제기본 클래스 생성 중엔 가상 함수가 먹히지 않는다.기본 클래스의 생성자가 호출될 동안, 가상 함수는 절대로 파생 클래스로 내려가지 않는다.기본 클래스 부분이 생성되는 중엔 객체의 타입이 기본 클래스로 인지된다.가상함수가 기본 클래스의 것으로 호출된다.런타임 타입 정보를 사용하는 언어 요소(dynamic_cast, typeid 등)에서도 기본 클래스 타입의 객체로 취급한다.#include #include class A{public: A(){ std::cout 기본 클래스에서는 파생 클래스의 데이터가 아직 초기화되지 않았으므로 없었던 것처럼 취급하는 것이 안전하다..