(1)用于基本数据类型之间的转换,如把int转换为char,把int转换成enum,但这种转换的安全性需要开发者自己保证(这可以理解为保证数据的精度,即程序员能不能保证自己想要的程序安全),如在把int转换为char时,如果char没有足够的比特位来存放int的值(int>127或int<-127时),那么static_cast所做的只是简单的截断,及简单...
static_cast用于进行比较“自然”和低风险的转换,如整型和浮点型、字符型之间的互相转换。另外,如果对象所属的类重载了强制类型转换运算符 T(如 T 是int、int* 或其他类型名),则static_cast也能用来进行对象到 T 类型的转换。static_cast不能用于在不同类型的指针之间互相转换,也不能用于整型和指针之间的互相转...
比如:下面代码第二行会报错,“const_cast”: 无法从“const int”转换为“int”,值得注意的是,强转去掉常量属性之后通过指针修改变量,并不能改变原本常量的值,在【C++const常量玩出新花样】中有讲到 结果: 3,reinterpret_cast 用法:reinterpret_cast<type-id> (expression) 它可以把一个指针转换成一个整数,也可...
static_cast相当于传统的C语言里的强制转换,效果就相当于加个括号:int a=(long)b;建议用搜索一下 static_cast 这个词,你能学到更多东西。
static_cast是可以使用的最简单的类型转换。它是编译时强制转换。它可以在类型之间进行隐式转换(例如int到float,或指针到void*),它还可以调用显式转换函数(或隐式转换函数)。 const_cast用法示例 下面是static_cast的11个使用场景示例: 1. 用于原C风格的隐式类型转换 ...
int* ip = new int(42); void* vp = static_cast<void*>(ip);从void指针转换回原类型: 将 ...
static_cast静态类型转换 静态类型转换,在编译期间提供类型转换检查,主要用于非多态的场景(当然也可以用于多态的场景)。相比较于C语言风格引入了一些静态的约束,比如检查const属性和voliate属性 constintg=20;int*h=static_cast<int*>(&g); 上边示例的转换会导致编译错误,因为非const指针h想要指向一个常量。
double difference(int ival1, int ival2) { return ival1 - ival2; //返回值被提升为double类型 } 第2部分. 显式类型转换 被称为“强制类型转换”(cast) C 风格: (type-id) C++风格: static_cast、dynamic_cast、reinterpret_cast、和const_cast.. ...
intmain(){ A*Pa=newA(); B*Pb=NULL; Pb=static_cast<B*>(Pa);//下行转换,基类指针转换成子类 //Pb = dynamic_cast(Pa); // Pb->m = "hehehe"; Pb->l=7; Pb->f(); cout<<Pb->l<<endl;//能输出的原因的为:基类中刚好有int类型的变量,int和int刚好可以类型转换(换成short或者double也...
classA{virtualvoidFunc()=0;};classB:publicA{voidFunc(){};};classC:publicA{voidFunc(){};};classD:publicB,publicC{voidFunc(){}};intmain(){D*pD=newD;A*pA=dynamic_cast<A*>(pD);// You will get a pA which is NULL} 如果进行上面的直接转,你将会得到一个NULL的pA指针;这是因为,B...