FreeBSD Manual Pages
std::bad_cast(3) C++ Standard Libary std::bad_cast(3) NAME std::bad_cast - std::bad_cast Synopsis Defined in header <typeinfo> class bad_cast : public std::exception; An exception of this type is thrown when a dynamic_cast to a refer- ence type fails the run-time check (e.g. because the types are not related by inher- itance), and also from std::use_facet if the requested facet does not exist in the lo- cale. std-bad cast-inheritance.svg Inheritance diagram Member functions constructor constructs a new bad_cast object (public member function) operator= replaces the bad_cast object (public member function) what returns the explanatory string (public member function) std::bad_cast::bad_cast bad_cast() throw(); (until C++11) bad_cast() noexcept; (1) (since C++11) bad_cast( const bad_cast& other ) throw(); (2) (until C++11) bad_cast( const bad_cast& other ) noexcept; (since C++11) Constructs a new bad_cast object with an implementation-defined null-terminated byte string which is accessible through what(). 1) Default constructor. 2) Copy constructor. If *this and other both have dynamic type std::bad_cast then std::strcmp(what(), other.what()) == 0. (since C++11) Parameters other - another exception object to copy std::bad_cast::operator= bad_cast& operator=( const bad_cast& other ) throw(); (until C++11) bad_cast& operator=( const bad_cast& other ) noexcept; (since C++11) Assigns the contents with those of other. If *this and other both have dynamic type std::bad_cast then std::strcmp(what(), other.what()) == 0 after assignment. (since C++11) Parameters other - another exception object to assign with Return value *this std::bad_cast::what virtual const char* what() const throw(); (until C++11) virtual const char* what() const noexcept; (since C++11) Returns the explanatory string. Parameters (none) Return value Pointer to a null-terminated string with explanatory information. The string is suitable for conversion and display as a std::wstring. The pointer is guaranteed to be valid at least until the exception object from which it is ob- tained is destroyed, or until a non-const member function (e.g. copy assignment operator) on the exception object is called. Notes Implementations are allowed but not required to override what(). Inherited from std::exception Member functions destructor destroys the exception object [virtual] (virtual public member function of std::exception) what returns an explanatory string [virtual] (virtual public member function of std::exception) Example // Run this code #include <iostream> #include <typeinfo> struct Foo { virtual ~Foo() {} }; struct Bar { virtual ~Bar() { std::cout << "~Bar\n"; } }; struct Pub : Bar { ~Pub() override { std::cout << "~Pub\n"; } }; int main() { Pub pub; try { [[maybe_unused]] Bar& r1 = dynamic_cast<Bar&>(pub); // OK, upcast [[maybe_unused]] Foo& r2 = dynamic_cast<Foo&>(pub); // throws } catch(const std::bad_cast& e) { std::cout << "e.what(): " << e.what() << '\n'; } } Possible output: e.what(): std::bad_cast ~Pub ~Bar http://cppreference.com 2022.07.31 std::bad_cast(3)
NAME | Synopsis | Member functions | Parameters | Parameters | Return value | Parameters | Return value | Notes | Member functions | Example | Possible output:
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::bad_cast&sektion=3&manpath=FreeBSD+Ports+15.0>
