你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS用兩行代碼完善處理數據耐久化

iOS用兩行代碼完善處理數據耐久化

編輯:IOS開發綜合

因為強迫轉換為援用類型掉敗,dynamic_cast 運算符激發 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 激發 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();
  }
}

因為強迫轉換的對象 (Shape) 不是派生自指定的強迫轉換類型 (Circle),是以激發異常。若要防止此異常,請將以下聲明添加到 main:

Circle circle_instance;
Circle& ref_circle = circle_instance;

然後在 try 塊中反轉強迫轉換的意義,以下所示:

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

【iOS用兩行代碼完善處理數據耐久化】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved