9.枚举转int(scoped enum to int) 将枚举代表的值转换为int enum class E { ONE = 1, TWO, THREE }; E e = E::TWO; 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 cla...
b. 进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。 ②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。 ③把空指针转换成目标类型的空指针。 ④把任何类型的表达式转换成void类型。 注意:static_cast不能转换掉exdiv...
b. 进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。 ②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。 ③把空指针转换成目标类型的空指针。 ④把任何类型的表达式转换成void类型。 注意:static_cast不能转换掉exdiv...
enum e { A = 1, B, C }; double d = 12.25; unsigned int ui = 25; 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;...
②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。 ③把空指针转换成目标类型的空指针。 ④把任何类型的表达式转换成void类型。 注意:static_cast不能转换掉expression的const、volatile、或者__unaligned属性。
2、用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。 3、将void*转换成目标类型指针。 4、把任何类型的表达式转换成void类型。 注意:static_cast不能转换掉expression的const、volatile、或者__unaligned属性。
(1)用于基本数据类型之间的转换,如把int转换为char,把int转换成enum,但这种转换的安全性需要开发者自己保证(这可以理解为保证数据的精度,即程序员能不能保证自己想要的程序安全),如在把int转换为char时,如果char没有足够的比特位来存放int的值(int>127或int<-127时),那么static_cast所做的只是简单的截断,及简单...
C++中总共有四个强制类型转换操作符:reinterpert_cast、static_cast、const_cast、dynamic_cast。强制类型转换,也称为显式转换,接下来我们讲讲static_cast这个强制类型转换操作符。 编译器隐式执行的任何类型转换都可以由static_cast来完成,比如int与float、double与char、enum与int之间的转换等。
static_cast 的特点就是他是在编译期做检查。比如,以下的例子都直接编译报错的:structA{};structB{}...
enum Color { RED, GREEN, BLUE };int value = static_cast<int>(GREEN); // value = 1 2. 限制 不能用于转换不相关的指针或引用类型。例如,不能将void*转换为其他类型的指针,或反之。在这种情况下,应使用reinterpret_cast。 不能用于移除或添加const限定符。在这种情况下,应使用const_cast。