Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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)

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>

home | help