您应该使用reinterpret_cast<char *>而不是static_cast<char *>,因为数据类型不相关:例如,您可以在指向子类的指针与超类之间转换,或者在int之间转换和long,或void *与任何指针之间,但unsigned int *到char *不是“安全”,因此您无法使用static_cast。< / p> 不同之处在于,在C ++中,您有各种类型的强制转换:...
它主要有如下几种用法: (1)用于基本数据类型之间的转换,如把int转换为char,把int转换成enum,但这种转换的安全性需要开发者自己保证(这可以理解为保证数据的精度,即程序员能不能保证自己想要的程序安全),如在把int转换为char时,如果char没有足够的比特位来存放int的值(int>127或int<-127时),那么static_cast所做...
char c = static_cast<char>(ui); int i = static_cast<int>(d); int j = static_cast<int>(B); //父类子类转换 class F //father { public: int _father; }; class S : public F //son { public: _son; }; F *pFather = new F(); S *pSon = new S(); F *pF; S *pS; p...
③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. }; ...
3 用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。4 用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证...
比如,将int 绑定到float:int num=5; float fnum=static_cast<float>(num);只要cpu支持运算,把一种类型转换为另一种类型,比如char到int,就可以直接使用static_cast:int inum = static_cast<int>(ch) 。 其次,static_cast可以实现指针的类型转换,它可以用来将派生类的指针转换为其基类对象指针。比如,class A...
它主要有如下几种用法: 1.类层次结构中基类和子类之间指针或引用的转换。 子类转基类:把子类的指针或引用转换成基类表示,是安全的; 基类转子类:把基类指针或引用转换成子类表示时,由于没有动态类型检查,所以是不安全的。 2.基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发...
static_cast是静态转换的意思,也就是在编译期间转换,转换失败的话会抛出一个编译错误。主要用于, 基本数据类型之间的转换。如把 int 转换成 char,把 int 转换成 enum。这种转换的安全性需要开发人员来保证。 void 指针转换成目标类型的指针。这种转换的安全性需要开发人员来保证。