异常
abort()
abort()位于cstdlib头文件里,它向标准错误流发送消息(程序异常终止),然后终止程序,这样,可以在条件检查后,发生异常的话就终止程序。
异常机制
使用try代码块,用catch捕获异常,try代码块发生异常后,就会跳转到catch块,如:
try
{
...
}
catch (const char* s)
{
...
}
还可以使用throw关键字,它可以抛出一个自定义的异常字符串,也可以跟一个对象:
throw "some exception";
throw object();
exception类
位于exception头文件中,可以将其作为异常类的基类。其中有一个成员方法what()虚方法,返回一个代表异常的字符串。
class bad_heam : public std::exception
{
public:
const char* what(){return "...";}
};
RTTI
即运行阶段类型识别。C++支持3个RTTI元素:
- dynamic_cast,将使用一个指向基类的指针生成一个指向派生类的指针。
- typeid,返回一个指出对象的类型的值。
- type_info,该结构存储了有关特定累心的信息。
类型转化运算符:
有4个类型转化运算符:
- dynamic_cast
- const_cast
- static_cast
- reinterpret_cast
const_cast将值转换为const或volatile。static_cast:
static_cast<type-name>(expression)
只有当type-name可被隐式转换为expression类型时,或expression可被隐式转换为type-name所属类型时,static_cast才合法。
reinterpret_cast不允许删除const,用于天生危险的类型转换。
网友评论