一、类型信息
typeid 用于获取数据类型的信息,返回值是type_info类型的对象,需要加头文件typeinfo。
type_info类型:
name() 返回基本类型的缩写,返回自定义类型的名字。
同时还支持 == != 用于判断两种数据是否是同一种类型。
注意:如果用于判断父子类型的指针或引用,它并不能准确判断出实际的类对象,但是如果父类中有虚函数则可以。
二、异常处理
C++异常处理是一种错误的处理方式,系统使用信号,C语言使用返回值。
1、抛异常
把一个包含错误信息的数据,返回给调用者,这种行为叫抛异常。
throw 数据;
当执行throw语句时,函数会停止,数据会抛出函数的调用者,功能与return相似,不同的是抛出的数据如果不捕获则程序就会停止运行。
注意:不能抛出局部对象的指针或引用。
2、捕获异常
try{
可能抛出异常的代码
}
catch(类型 对象) // 根据数据类型进行异常捕获
{
处理异常,如果无法处理可以继承向上抛。
}
catch(类型 对象)
{
...
}
注意:异常在捕获时并不是精准匹配,而是自上而下,异常捕获时,子类要写在父类之前。
函数的异常声明:
返回值类型 函数名(参数列表) throw(类型1,类型2,…)
{
}
它表示了该函数可能会产生的异常类型,方便调用者捕获。
注意:如果抛出的声明之外的异常,侧程序直接结束不会进入捕获阶段。
注意:如果没有写异常声明,则表示任何类型的异常都可能抛出。
注意:throw() 表示该函数不会抛出异常。