當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ typeinfo::bad_cast用法及代碼示例


標準 C++ 包含多個 內置 異常類。 typeinfo::bad_cast 就是其中之一。這是動態轉換失敗時拋出的異常。以下是相同的語法:

頭文件:

<typeinfo>

用法:

class bad_cast;

注意:要使用 std::bad_cast,應該設置適當的 try 和 catch 塊。

返回值:它不返回任何東西。



以下是更好地理解 std::bad_cast 實現的示例:

程序1:


// C++ code for std::bad_cast
#include <bits/stdc++.h>
#include <typeinfo>
  
using namespace std;
  
// Base Class
class Base {
    virtual void member() {}
};
  
// Derived Class
class Derived:Base {
};
  
// main() method
int main()
{
  
    // try block
    try {
        Base gfg;
        Derived& rd
            = dynamic_cast<Derived&>(gfg);
    }
  
    // catch block to handle the errors
    catch (bad_cast& bc) {
        cerr << "bad_cast caught:"
             << bc.what() << endl;
    }
  
    return 0;
}

輸出:

bad_cast caught:std::bad_cast

程序2:


// C++ code for std::bad_cast
#include <bits/stdc++.h>
#include <typeinfo>
  
using namespace std;
  
// Base Class
class Base {
    virtual void member() {}
};
  
// Derived Class
class Derived:Base {
};
  
// main() method
int main()
{
  
    // try block
    try {
        Base geeksforgeeks;
        Derived& abc
            = dynamic_cast<Derived&>(
                geeksforgeeks);
    }
  
    // catch block to handle the errors
    catch (bad_cast& a) {
        cerr << "bad_cast caught:"
             << a.what() << endl;
    }
  
    return 0;
}

輸出:

bad_cast caught:std::bad_cast

參考:http://www.cplusplus.com/reference/typeinfo/bad_cast/




相關用法


注:本文由純淨天空篩選整理自bansal_rtk_大神的英文原創作品 typeinfo::bad_cast in C++ with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。