C++ 显式类型转换

来源:互联网 发布:留燕软件 编辑:程序博客网 时间:2024/06/04 17:48

对于类型转换,我在查资料的时候看到了一种很有意思的解释,我们可以这样理解类型转换:

某块内存中的数据是不变的,而类型就是我们戴上的眼镜,当我们戴上一种眼镜后,我们就会用对应的类型来解释内存中的数据,这样不同的解释就得到了不同的信息。

所谓强制类型转换实际上就是换上另一副眼镜后再来看同样的那块内存数据。


    C++中有以下四种显式类型转换:


    const_cast用来去掉const属性,四种类型转换中只有它可以做到


    static_cast就是静态类型转换,静态类型包括一般类型,静态类型的内存分配在栈上。它没有在运行时检查来确保这项转化是安全的转化,当遇到有歧义的指针时,dynamic_cast会失败,而static_cast将返回,好像没有任何错误一样。这是非常危险的。


    dynamic_cast,命名上理解是动态类型转换,如子类和父类之间的多态类型转换。dynamic_cast是安全的,但是它仅适用于指针和引用,并且运行时检查是一个负担。


   reinterpret_cast的意思是重新解释类型,但没有进行二进制的转换。它的实际动作及结果可能取决于编译器,因此意味着它不可移植 

     4种类型转换的格式,如:TYPE B = static_cast<TYPE>(a)。

原创粉丝点击