📜  C++中的typeinfo :: bad_cast及其示例

📅  最后修改于: 2021-05-30 03:18:20             🧑  作者: Mango

标准C++包含几个内置的异常类。 typeinfo :: bad_cast是其中之一。这是由于无法动态转换而引发的异常。以下是相同的语法:

头文件:


句法:

class bad_cast;

注意:要使用std :: bad_cast ,应设置适当的try和catch块。

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

下面的示例可以更好地理解std :: bad_cast的实现:

程序1:

// C++ code for std::bad_cast
#include 
#include 
  
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(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 
#include 
  
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(
                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/

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”