enum, struct, int, char, float等。static_cast不能进行无关类型(如非基类和子类)指针之间的转换。 3. 把空指针转换成目标类型的空指针。 4. 把任何类型的表达式转换成void类型。 5. static_cast不能去掉类型的const、volitale属性(用const_cast)。 int n = 6; double d = static_castdouble>(n); //...
(1)用于基本数据类型之间的转换,如把int转换为char,把int转换成enum,但这种转换的安全性需要开发者自己保证(这可以理解为保证数据的精度,即程序员能不能保证自己想要的程序安全),如在把int转换为char时,如果char没有足够的比特位来存放int的值(int>127或int<-127时),那么static_cast所做的只是简单的截断,及简单...
因此,static_cast可以反向执行隐式转换,而在这种情况下结果是不确定的。 这需要程序员来验证static_cast转换的结果是否安全。 该行为也适用于类以外的类型。 例如,static_cast可用于将 int 转换为char。 但是,得到的char可能没有足够的位来保存整个int值。 同样,这需要程序员来验证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 char *hello() const { return "Hello world, this is B!\n"; ...
static_cast 静态类型转换。如int转化成char reinterpret_cast 重新解释类型 dynamic_cast 命名上理解是动态类型转换,如子类和父类之间的多态类型转换 const_cast 字面上理解就是去const属性 类型转换介绍 static_cast<>() 静态类型转换,编译时c++编译器会做类型检查 ...
so,小结一下static_cast: 基本数据类型之间的转换,如把int转换成char,把int转换成enum 用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成子类指针或引用)时,由于没有动态类型检查,所以是不安全的。
运算符T,则该对象也可以使用static_cast进行到T类型之间的转换,static_cast不能用在不同类型的指针之间的转换,包括整形和指针之间的转换,也不能用于不同类型的引用之间的转换,因为这些转换都是高风险的。 #include<iostream>intmain(){intiValue=65;// 'A'charcValue,cValueError;doubledValue;//将int转为char...
例如,我们可以将一个int类型的值转换成double类型的值,或者将一个char类型的值转换成int类型的值。 static_cast操作符的语法是: static_cast<T> (expr) 其中,T是将要转换成的目标类型,expr是需要进行转换的表达式。static_cast运算符可以用于任何可以转换的数据类型,如内置数据类型、指针和引用等。 static_cast...
static_cast 转换字符串地址static_cast 不能直接用于将字符串常量转换为地址的形式,因为字符串常量在 C++ 中已经是一个地址。我们可以用 static_cast 将字符串常量转换为 const void* 类型来查看其地址。让我们通过示例说明:#include <iostream>int main() {const char* str = "Hello, World!";// 输出字符串...