标准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等的更多准备工作,请参阅“完整面试准备课程” 。