// 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 char dbl = static_cast<double>(f); // float to double i = static_cast<BYTE>(ch); ...
static_cast在这里给您一个错误,因为您要说的是int并尝试将其放入char(一个 int 并尝试将其放在 char 中),这是不可能的。int需要的内存比char占用的内存多,并且无法以安全的方式进行转换。 如果你仍然想要实现这一点,你可以使用reinterpret_cast,它允许你对两种完全不同的数据类型进行类型转换,但它并不安全。 ...
原有的自动类型转换,例如 short 转 int、int 转 double、const 转非 const、向上转型等; void指针和具体类型指针之间的转换,例如void *转int *、char *转void *等; 有转换构造函数或者类型转换函数的类与其它类型之间的转换,例如 double 转 Complex(调用转换构造函数)、Complex 转 double(调用类型转换函数)。 ...
char a ; 1. int b = static_cast<int>(a); 1. char c = static_cast<char>(b); 1. type = static_cast<test_enum>(b); 1. char* pa = NULL; 1. int *pb = (int*)pa; 1. //int *pb = static_cast<int*>(pa); //error ...
2、用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。 3、将void*转换成目标类型指针。 4、把任何类型的表达式转换成void类型。 注意:static_cast不能转换掉expression的const、volatile、或者__unaligned属性。
用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。 把void指针转换成目标类型的指针(不安全!!) 把任何类型的表达式转换成void类型。 注意:static_cast不能转换掉expression的const、volitale、或者__unaligned属性。
void print(char *str) { std::cout << str << std::endl; } int main() { const char *cstr = "Hello World"; // print(cstr); // 错误:不能从const char*转换为char* print(const_cast<char *>(cstr)); // 4. dynamic_cast 动态转换 dynamic_cast 是 C++中的一个类型转换操作符,它主...
structCallback{intcontext;voidInvoke(inta,doubleb,constchar*c){cout<<context<<","<<a<<","<<b<<","<<c<<endl;}};intmain(){Callbackcallback{200};Fuck(CALLBACK(&callback,Invoke));return0;} C++需要不断地练习。
class D:public B{ public: char *m_szName[100]; }; void func(B *pb){ D *pd1 = static_cast(pb); D *pd2 = dynamic_cast(pb); } 在上面的代码段中,如果pb指向一个D类型的对象,pd1和pd2是一样的,并且对这两个指针执行D类型的任何操作都是安全的; 但是,如果pb指向的是一个B类型的对象,那...