bad_cast
来源:互联网 发布:文本简繁体转换软件 编辑:程序博客网 时间:2024/04/30 22:15
首先学习一下bad_cast
在微软的解释:The bad_cast exception is thrown by thedynamic_cast operator as the result of a failed cast to a reference type.
catch (bad_cast) statement
bad_cast 的接口是:
class bad_cast : public exception {public: bad_cast(const char * _Message = "bad cast"); bad_cast(const bad_cast &); virtual ~bad_cast();};
最新的VS2012的代码是:
class _CRTIMP_PURE bad_cast : public exception {public:#ifdef _M_CEE_PURE __CLR_OR_THIS_CALL bad_cast(const char * _Message = "bad cast") : exception(_Message) {} __CLR_OR_THIS_CALL bad_cast(const bad_cast &_That) : exception(_That) {} virtual __CLR_OR_THIS_CALL ~bad_cast() _NOEXCEPT {}#else /* _M_CEE_PURE */ __CLR_OR_THIS_CALL bad_cast(const char * _Message = "bad cast"); __CLR_OR_THIS_CALL bad_cast(const bad_cast &); virtual __CLR_OR_THIS_CALL ~bad_cast() _NOEXCEPT;#endif /* _M_CEE_PURE */};
// expre_bad_cast_Exception.cpp// compile with: /EHsc /GR#include <typeinfo.h>#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(); }}
- bad_cast
- libxml2中的"BAD_CAST"
- [Linux_C][2010-9-20]BAD_CAST
- bad_cast,const_cast,dynamic_cast,reinterpret_cast,static_cast(C++)
- soci库中使用oracle组函数导致bad_cast异常
- 解数独算法--C++实现
- Linux socket connect
- android下syslogd启动后出现“syslogd: bind: Address already in use”错误的解决方法
- 设计模式21 - Strategy 策略模式
- android.view.InflateException: Binary XML file line #异常的解决
- bad_cast
- Windows远程桌面连接Mac OS X
- FreeCMS部署到子目录首页乱了怎么办?
- Linux下的动态链接库.so文件的使用
- 考研结束了
- cgroup学习(二)——cgroup框架结构
- c# 解析JSON的几种办法
- JAVA 开发框架中 Datagrid,Tree,Panel,Dialog,ProgressBar 实现及应用
- FLex 获取当前时间 年月日 时分秒