细说C++类型转换操作符

发表于:2012-9-27 10:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:RO_wsy    来源:51Testing软件测试网采编

  4、dynamic_cast

  dynamic_cast用于子类和父类之间的转换,它可以将父类的指针或引用转换为子类的指针或引用。

  dynamic_cast与前三种强制转换不同,它涉及运行时类型检查。如果绑定到引用或指针的类型对象不是目标类型的对象时,则dynamic_cast失败。当用于指针的转换失败时,dynamic_cast的结果为0,用于引用的转换失败时,则抛出一个bad_cast异常。

  可用下面例子所用的结构对转换进行检测:

  指针转换:

 if(Derived *derviedPtr = dynamic_cast<Derived*>(basePtr){
  // use the Derived object to which derivedPtr points
 }
 else{
  // basePtr oiubsts at a Base object
  // use the Base object to which basePtr points
 }

  引用转换:

 void f(const Base& b)
 {
  try{
   const Derived& d = dynamic_cast<const Derived&>(b);
   // use the Derived object to which b referred
  }
  catch (bad_cast){
   // handle the fact that the cast failed
  }
 }

  至此,转换操作符介绍完毕。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号