当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。