您应该使用reinterpret_cast<char *>而不是static_cast<char *>,因为数据类型不相关:例如,您可以在指向子类的指针与超类之间转换,或者在int之间转换和long,或void *与任何指针之间,但unsigned int *到char *不是“安全”,因此您无法使用static_cast。< / p> 不同之处在于,在C ++中,您有各种类型的强制转换:...
Complex c(12.5,23.8);longn = static_cast<long>(m);//宽转换,没有信息丢失charch = static_cast<char>(m);//窄转换,可能会丢失信息int*p1 = static_cast<int*>(malloc(10*sizeof(int)) );//将void指针转换为具体类型指针void*p2 = static_cast<void*>(p1);//将具体类型指针,转换为void指针dou...
structCallback{intcontext;voidInvoke(inta,doubleb,constchar*c){cout<<context<<","<<a<<","<<b<<","<<c<<endl;}};intmain(){Callbackcallback{200};Fuck(CALLBACK(&callback,Invoke));return0;} C++需要不断地练习。
1.最常用的用法就是将子类指针转换为父类指针。(不举例) 2.当type_id为void*时,指针指向整个对象的空间。 Class A; A *pA = new A(); void *p = dynamic_cast<void*>(pA); 但是type_id不为void*时,计算机就要在运行时检查是否能够转换。
③const_cast一般用于修改底指针。如const char *p形式。 constintg=20;int*h=const_cast<int*>(&g);//去掉const常量const属性constintg=20;int&h=const_cast<int&>(g);//去掉const引用const属性constchar*g="hello";char*h=const_cast<char*>(g);//去掉const指针const属性 ...
static_cast 用法示例如下: 1. #include <iostream> 2. u[sin](http://c.biancheng.net/ref/sin.html)g namespace std; 3. class A 4. { 5. public: 6. operator int() { return 1; } 7. operator char*() { return NULL; } 8. }; ...
reinterpret_cast是四种操作符中转换能力最强的操作符,它设置可以实现char *和class *的类型转换 const_cast的用法 const_cast是一种C++运算符,作用是去除复合类型中的const或volatile属性 变量本身的const属性是不能去掉的,要想修改常量的值,一般是去除指向该变量的指针(引用)的const属性 ...
static_cast是可以使用的最简单的类型转换。它是编译时强制转换。它可以在类型之间进行隐式转换(例如int到float,或指针到void*),它还可以调用显式转换函数(或隐式转换函数)。 const_cast用法示例 下面是static_cast的11个使用场景示例: 1. 用于原C风格的隐式类型转换 ...