static_cast and dynamic_cast
static_cast 是在编译时刻,转换; dynamic_cast 是在运行时刻转换。
dynamic_cast 限制
- 转换的目的类型只能是指针或引用
- 对于相互转换的类型,要有继承关系
- 如果子类向父类转换,没有任何要求
- 如果父类向子类转换,需要父类是多态类型(即实现了虚函数,因为,在具体实现上,要使用虚表指针)
如果转换的是引用,转换失败,将抛出异常std::bad_cast;如果转换的是指针,转换失败,将返回nullptr。
static_cast 是在编译时刻,转换; dynamic_cast 是在运行时刻转换。
如果转换的是引用,转换失败,将抛出异常std::bad_cast;如果转换的是指针,转换失败,将返回nullptr。