static_cast<T>(运算表达式) 它将"运算表达式"的值转换为T类型的值, 这种类型转换只适用于表达式的类型与类型T之间有适应的关系的情形。 static_cast 的类型转换能力虽然较弱,但是更安全。此时,编译器将会指出不恰当的类型转换。 示例: void *s static_cast<char*>(s); 在C++中,T* 和 void* 相互之间是适应的,基本数据类型中的整形与字符类型、 整形与实数类型之间是适应的。我们可以使用该操作符进行此类强制类型转换。 reinterpret_cast<T>(运算表达式) 这里,T可以是指指针类型、引用、算术类型或指向函数的指针类型。使用该操作符, 指针可以被解释为整数类型的值,整数类型的值可以被解释为指针。 在将指针转换为整数,再将结果转换为指针时,转换结果与愿指针相同。 该操作符用于替代C中与实现相关的或不安全的强制转换。 例如: char *ps; struct A { char ps[100]; }; A *pa; ps = reinterpret_cast<char *ps>(pa); 在c++中,reinterpret_cast 是最强有力的类型转换操作符。如果使用不当,会给程序造成严重的运行时错误。 const_cast<T>(运算表达式) 设"运算表达式"的类型为 V,则T必须是由V进const/volatile修饰符修饰之后得到的派生类型,或反之。 该强制类型转换表达式的结果类型是T。 dynamic_cast<T>(运算表达式) .......
static_cast是编译时做的转换,能够检测一些的错误转换。 dynamic_cast是运行时才做的转换
13,825
社区成员
102,679
社区内容
加载中
试试用AI创作助手写篇文章吧