int two = static_cast<int>(e); std::cout << "7) " << two << '\n'; http://10.int转enum以及enum转为其他enum(int to enum, enum to another enum) enum class E { ONE = 1, TWO, THREE }; enum EU { ONE = 1, TWO, THREE }; E e2 = static_cast<E>(two); [[maybe_unuse...
在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的; 在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。 class B{ public: int m_iNum; virtual void foo(); }; class D:public B{ public: char *m_szName[100]; }; void func(B *pb){ D *pd1 = static_ca...
在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。 class B{ public: int m_iNum; virtual void foo(); }; class D:public B{ public: char *m_szName[100]; }; void func(B *pb){ D *pd1 = static_cast(pb); D *pd2 = dynamic_cast(pb); } 在上面的代码段中,如果p...
控制台输出 8. void*转换到具体类型(inverse of implicit conversion),static_cast可以提取void*类型中的值 控制台输出 9. 枚举转int(scoped enum to int),将枚举代表的值转换为int 10. int转enum以及enum转为其他enum(int to enum, enum to another enum)11. 成员指针的上行转换(pointer ...
用于基本数据类型之间的转换。如把int转换成char。把int转换成enum。 这样的转换的安全性也要开发者来保证。 把空指针转换成目标类型的空指针。 把不论什么类型的表达式转换成void类型。 注意:static_cast不能转换掉expression_r_r的const、volitale、或者__unaligned属性。
short是2个字节,int是4个字节,将short转换成int之后,高位根据符号位补满。 so,小结一下static_cast: 基本数据类型之间的转换,如把int转换成char,把int转换成enum 用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用转换成基类表示)是安全的; ...
②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。 ③把空指针转换成目标类型的空指针。 ④把任何类型的表达式转换成void类型。 注意:static_cast不能转换掉exdivssion的const、volitale、或者__unaligned属性。
structA{};structB{};int*p;static_cast<A*>(p);// 显然编译错误A*p;static_cast<B*>(p);//...
②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。③把空指针转换成目标类型的空指针。④把任何类型的表达式转换成void类型。注意:static_cast不能转换掉exdivssion的const、volitale、或者__unaligned属性。3.2dynamic_cast用法:dynamic_casttype-id(exdivssion)...
1. static_cast与dynamic_cast 1> static_cast运算符可用于诸如将指向基类的指针转换为指向派生类的指针之类的操作。这种转换并不总是安全的。 2> 通常,当你要将数字数据类型(如枚举转换为整数或整数)转换为浮点数时,你可以使用static_cast,并且您确定转换中涉及的数据类型。 static_cast转换不像dynamic_cast转换...