C++中的四中类型转换:
1.const_cast
用于将const变量转换为非const变量
2.static_cast
用于各种隐式转换,比如非const转const,void*转指针static_cast能用于多态向上转化,
3.dynamic_cast
用于动态类型转换,只能用于含有虚函数的类。只能转指针或引用。
向上转换:指的是子类向基类的转换
向下转换:指的是基类向子类的转换
向下转换时如果是非法的,对于指针返回NULL,对于引用抛异常。
4.reinterpret_cast
几乎什么都可以转,比如将int转指针,可能会出问题,尽量少用
为什么不使用C的强制转换?
强制转换看起来什么都可以转,但是转化不够明确,不能进行错误检查,容易出错。