您应该使用reinterpret_cast<char *>而不是static_cast<char *>,因为数据类型不相关:例如,您可以在指向子类的指针与超类之间转换,或者在int之间转换和long,或void *与任何指针之间,但unsigned int *到char *不是“安全”,因此您无法使用static_cast。< / p> 不同之处在于,在C ++中,您有各种类型的强制转换:...
};intmain(){//下面是正确的用法intm =100; 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<v...
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 char *hello() const { return "Hello world, this is D!\n"; } }; 将父类的引用转换为子类的引用 D d; B &br = d; // upcast via implicit conversion std::cout << "1) " << br.hello(); D &another_d = static_cast<D &>(br); // downcast ...
它主要有如下几种用法: (1)用于基本数据类型之间的转换,如把int转换为char,把int转换成enum,但这种转换的安全性需要开发者自己保证(这可以理解为保证数据的精度,即程序员能不能保证自己想要的程序安全),如在把int转换为char时,如果char没有足够的比特位来存放int的值(int>127或int<-127时),那么static_cast所做...
③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. }; ...
比如,将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...