bad_cast 예외

Bad_cast 예외는 dynamic_cast 참조 형식으로의 실패 한 캐스트의 결과로 연산자에 의해 throw 됩니다.

구문

catch (bad_cast)
   statement

설명

Bad_cast 에 대 한 인터페이스는 다음과 같습니다.

class bad_cast : public exception

다음 코드에는 dynamic_cast bad_cast 예외를 throw 하는 실패 한의 예가 포함 되어 있습니다.

// expre_bad_cast_Exception.cpp
// compile with: /EHsc /GR
#include <typeinfo>
#include <iostream>

class Shape {
public:
   virtual void virtualfunc() const {}
};

class Circle: public Shape {
public:
   virtual void virtualfunc() const {}
};

using namespace std;
int main() {
   Shape shape_instance;
   Shape& ref_shape = shape_instance;
   try {
      Circle& ref_circle = dynamic_cast<Circle&>(ref_shape);
   }
   catch (bad_cast b) {
      cout << "Caught: " << b.what();
   }
}

캐스팅 되는 개체 (도형)가 지정 된 캐스트 형식 (원)에서 파생 되지 않기 때문에 예외가 throw 됩니다. 예외를 방지하려면 main에 다음과 같은 선언을 추가합니다.

Circle circle_instance;
Circle& ref_circle = circle_instance;

그런 다음 블록에서 캐스트의 의미를 try 다음과 같이 바꿉니다.

Shape& ref_shape = dynamic_cast<Shape&>(ref_circle);

멤버

생성자

생성자 Description
bad_cast bad_cast 형식의 개체에 대한 생성자입니다.

Functions

함수 설명
이며 TBD

연산자

연산자 설명
연산자 = bad_cast 개체를 다른 개체에 할당 하는 대입 연산자입니다.

bad_cast

bad_cast 형식의 개체에 대한 생성자입니다.

bad_cast(const char * _Message = "bad cast");
bad_cast(const bad_cast &);

연산자 =

bad_cast 개체를 다른 개체에 할당 하는 대입 연산자입니다.

bad_cast& operator=(const bad_cast&) noexcept;

이며

const char* what() const noexcept override;

참고 항목

dynamic_cast 연산자

예외 및 오류 처리에 대 한 최신 c + + 모범 사례