谈谈静态转换、动态转换、常量转换、重新解析转换的区别
静态转换(static_cast)
用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。
1、进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;
2、进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。
3、用于基本数据类型之间的转换,如把int转换成char,把char转换成int。这种转换的安全性也要开发人员来保证。
动态转换(dynamic_cast)
1、dynamic_cast主要用于类层次间的上行转换和下行转换;
2、在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;
3、在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。
常量转换(const_cast)
1、该运算符用来修改类型的const属性。
2、常量指针被转化成非常量指针,并且仍然指向原来的对象;
3、常量引用被转换成非常量引用,并且仍然指向原来的对象;
注意:不能直接对非指针和非引用的变量使用const_cast操作符去直接移除它的const
重新解析转换(reinterpret_cast)
这是最不安全的一种转换机制,最有可能出问题。主要用于将一种数据类型从一种类型转换为另一种类型。它可以将一个指针转换成一个整数,也可以将一个整数转换成一个指针。
更多关于物联网培训的问题,欢迎咨询千锋教育在线名师。千锋教育拥有多年IT培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。