考虑到 (以及的事实): BYTE* pbNext = reinterpret_cast<BYTE*>( VirtualAlloc(NULL, cbAlloc, MEM_COMMIT, PAGE_READWRITE)); 为什么选择reinterpret_cast而不是static_cast 我曾经认为reinterpret_cast可以用于将指针转换为整数类型(例如DWORD_PTR),但是从void*转换为BYTE*,static_cast不也可以吗?有没有什么(微...
const_cast只能改变常量属性 constchar*pc;char*p = const_cast<char*>(pc);// 正确:但通过p写值是未定义行为。能否通过p写值,取决于对象本身是否为一个常量 4. reinterpret_cast 通常为运算对象的位模式提供较低层次上的重新解释。 慎用,可能导致运行错误。 int*ip;char*pc = reinterpret_cast<char*>(ip)...
static_cast 运算符还可用于执行任何隐式转换,包括标准转换和用户定义的转换。 例如:C++ 复制 // static_cast_Operator_3.cpp // compile with: /LD /GR typedef unsigned char BYTE; void f() { char ch; int i = 65; float f = 2.5; double dbl; ch = static_cast<char>(i); // int to ...
dynamic_cast: 通常在基类和派生类之间转换时使用,run-time cast const_cast: 主要针对const和volatile的转换. static_cast: 一般的转换,no run-time check.通常,如果你不知道该用哪个,就用这个。 reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。 这些偏重于口语化解释,最...
typedef unsigned charBYTE;voidf(){char ch;int i=65;float f=2.5;double dbl;ch=static_cast<char>(i);// int to chardbl=static_cast<double>(f);// float to doublei=static_cast<BYTE>(ch);} 示例代码2: 代码语言:javascript 复制
因为从安全性上说,不同的转型(cast)有很大的区别,所以 C++ 引入了四种不同的具名转型(named cast...
reinterpret_cast 功能最强,道理最简单,但是最危险.static_cast:double a = 1.1; show_byts<8...
使用static_cast:它是精确描述这里所进行的转换的最窄的类型转换。
c)static_cast(带扩展),然后是const_cast;d)一米十二至一米 e)reinterpret_cast,然后是const_...
typedef unsigned char BYTE void f() { char ch; int i = 65; float f = 2.5; double dbl; ch = static_cast<char>(i); // int to char dbl = static_cast<double>(f); // float to double ... i = static_cast<BYTE>(ch);