最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析C++編程中的bad_cast異常

 更新時(shí)間:2016年01月15日 16:14:55   投稿:goldensun  
這篇文章主要介紹了C++編程中的bad_cast異常,bad_cast異常通常出現(xiàn)于表達(dá)式中類(lèi)型轉(zhuǎn)換錯(cuò)誤時(shí)等一些場(chǎng)景,需要的朋友可以參考下

由于強(qiáng)制轉(zhuǎn)換為引用類(lèi)型失敗,dynamic_cast 運(yùn)算符引發(fā) bad_cast 異常。
語(yǔ)法

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();
};

以下代碼包含失敗的 dynamic_cast 引發(fā) bad_cast 異常的示例。

// 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();
  }
}

由于強(qiáng)制轉(zhuǎn)換的對(duì)象 (Shape) 不是派生自指定的強(qiáng)制轉(zhuǎn)換類(lèi)型 (Circle),因此引發(fā)異常。若要避免此異常,請(qǐng)將下列聲明添加到 main:

Circle circle_instance;
Circle& ref_circle = circle_instance;

然后在 try 塊中反轉(zhuǎn)強(qiáng)制轉(zhuǎn)換的意義,如下所示:

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

相關(guān)文章

最新評(píng)論

礼泉县| 和林格尔县| 庄河市| 栾川县| 醴陵市| 策勒县| 南陵县| 苗栗县| 远安县| 开鲁县| 开原市| 兴城市| 庐江县| 东山县| 资中县| 桑日县| 柏乡县| 桐城市| 成都市| 郴州市| 齐河县| 平邑县| 苏尼特右旗| 青铜峡市| 神池县| 咸阳市| 于田县| 平果县| 德安县| 汉阴县| 兰州市| 湖口县| 海兴县| 定边县| 高州市| 灵璧县| 邵阳市| 唐山市| 合作市| 普陀区| 宜章县|