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

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

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

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

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)換的對象 (Shape) 不是派生自指定的強(qiáng)制轉(zhuǎn)換類型 (Circle),因此引發(fā)異常。若要避免此異常,請將下列聲明添加到 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)文章

最新評論

松江区| 江西省| 正安县| 阜城县| 乌拉特后旗| 连江县| 通山县| 洪洞县| 华蓥市| 鄂伦春自治旗| 原阳县| 涿州市| 永德县| 蓬莱市| 金寨县| 孝昌县| 康乐县| 凌云县| 荔波县| 湟中县| 杭锦旗| 肃宁县| 衢州市| 新宁县| 蓬莱市| 铁岭市| 哈巴河县| 讷河市| 石家庄市| 黎城县| 宜良县| 康马县| 全椒县| 汶川县| 武乡县| 连江县| 都匀市| 巴林右旗| 双柏县| 高淳县| 五大连池市|