如果new type为void类型,static_cast将会在计算表达式的值之后丢弃这个值,无法使用变量接到这个值。 static_cast<void>(v2.size()); int a = static_cast<void>(v2.size()); //error,void value not ignored as it ought to be 6.上行转换,同时将数组转换为指针 struct B { int m = 42; const cha...
int n2 = reinterpret_cast<int>(&o1); int n3 = reinterpret_cast<int&>(f1); int n4 = reinterpret_cast<int&>(o1); 2. 指针【引用】之间互转。如:float*转成int*、CBase&转成int&、CBase*转成CBase2*、CBase&转成CBase2&等 float f1 = 1.0f; CBase1 o1; int* n1 = reinterpret_cast<i...
static_cast 和 C 风格的强转在此类情况下 (值转值)行为基本一致 int f = (int)a; ...
intc=static_cast<int>(7.987); 1classA2{};3classB:publicA4{};5classC6{};78intmain()9{10A* a=newA;11B*b;12C*c;13b=static_cast<B*>(a);//编译不会报错, B类继承A类14c=static_cast<B*>(a);//编译报错, C类与A类没有任何关系15return1;16} 2.const_cast: 它可以使一个本来不是con...
// C 语言中如果可以进行隐式类型转换 , 如果使用 C++ 的静态类型转换 // 此时在 C++ 编译器 编译时会进行类型检查 , 如果有错编译不通过 , 这样不容易出错 int num3 = static_cast<int> (pi); 1. 2. 3. 4. 5. 6. 7. 2、C 语言隐式转换弊端 ...
1. static_cast 1.1 static_cast语法 static_cast<new_type>(expression) 1. 备注:new_type为目标数据类型,expression为原始数据类型变量或者表达式。 C风格写法: doublescores=96.5; intn=(int)scores; 1. 2. C++ 新风格的写法为: doublescores=96.5; ...
static_cast 运算符还可用于执行任何隐式转换,包括标准转换和用户定义的转换。 例如:C++ 复制 // 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 ...
double difference(int ival1, int ival2) { return ival1 - ival2; //返回值被提升为double类型 } 第2部分. 显式类型转换 被称为“强制类型转换”(cast) C 风格: (type-id) C++风格: static_cast、dynamic_cast、reinterpret_cast、和const_cast.. ...
C++中总共有四个强制类型转换操作符:reinterpert_cast、static_cast、const_cast、dynamic_cast。强制类型转换,也称为显式转换,接下来我们讲讲static_cast这个强制类型转换操作符。 编译器隐式执行的任何类型转换都可以由static_cast来完成,比如int与float、double与char、enum与int之间的转换等。
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. }; ...