static_cast相当于传统的C语言里的强制转换,该运算符把expression转换为new_type类型,用来强迫隐式转换,例如non-const对象转为const对象,编译时检查,用于非多态的转换,可以转换指针及其他,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:
static_cast <new_type> (expression) dynamic_cast <new_type> (expression) reinterpret_cast <new_type> (expression) const_cast <new_type> (expression) 可以提升转换的安全性。 回到顶部(go to top) static_cast <new_type> (expression) 静态转换 静态转换是最接近于C风格转换,很多时候都需要程序员自...
最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。 static_cast 用法:static_cast< type-id > ( expression ) 说明:该运算符把expression转...
如果一条dynamic_cast语句的转换目标是指针类型并且失败了,则结果为0。如果转换目标是引用类型并且失败了,则dynamic_cast运算符将抛出一个std::bad_cast异常(该异常定义在typeinfo标准库头文件中)。e也可以是一个空指针,结果是所需类型的空指针。 dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类...
assert动态断言,从C继承过来的宏定义,头文件assert.h。 从下面源码可以看到,assert是把表达式通过static_cast<bool>转换成bool类型,从而实现断言。 // # if defined __cplusplus#defineassert(expr)\(static_cast<bool>(expr)\?void(0)\:__assert_fail(#expr,__FILE__,__LINE__,__ASSERT_FUNCTION)) ...
C++风格: static_cast、dynamic_cast、reinterpret_cast、和const_cast.. 3.1 static_cast 用法:static_cast < type-id > ( expression ) 说明:该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。 来源:为什么需要static_cast强制转换?
static_cast 用法:static_cast< type-id > ( expression ) 说明:该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。 来源:为什么需要static_cast强制转换? 情况1:void指针->其他类型指针 情况2:改变通常的标准转换 情况3:避免出现可能多种转换的歧义 ...
这个是静态强制装换,在编译时期对类型做出检查,但是在运行期就不再检查。适合的是普通的内置类型的强制转换。它是操作符,所以不需要引用头文件。static_cast<类型>(需要转换的)
static_cast 用法:static_cast< type-id > ( expression ) 说明:该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。 来源:为什么需要static_cast强制转换? 情况1:void指针->其他类型指针 情况2:改变通常的标准转换 情况3:避免出现可能多种转换的歧义 ...