例如float转int float a = 1.3; int b = static_cast<int>(a); cout<<"b="<<b<<endl; 2.静态下行转换( static downcast) 不执行类型安全检查。 Note: Ifnew-typeis a reference to some classDandexpressionis an lvalue of its non-virtual baseB, ornew-typeis a pointer to some complete class...
08.intn =static_cast(f); 09. 10.// 错误,指向的类型是无关的(译注:即指针变量pf是float类型,现在要被转换为int类型) 11.//int* pn = static_cast(pf); 12. 13.//成功编译 14. 15.void* pv =static_cast(pf); 16. 17.//成功编译, 但是 *pn2是无意义的内存(rubbish) 18. 19.int* pn2...
int n = static_cast<int>(f); // 错误,指向的类型是无关的(译注:即指针变量pf是float类型,现在要被转换为int类型) //int* pn = static_cast<int*>(pf); //成功编译 void* pv = static_cast<void*>(pf); //成功编译, 但是 *pn2是无意义的内存(rubbish) int* pn2 = static_cast<int*>(pv...
int n = static_cast<int>(f); // 错误,指向的类型是无关的(译注:即指针变量pf是float类型,现在要被转换为int类型) //int* pn = static_cast<int*>(pf); //成功编译 void* pv = static_cast<void*>(pf); //成功编译, 但是 *pn2是无意义的内存(rubbish) int* pn2 = static_cast<int*>(pv...
short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,编译器允许直接转换。 但若 double a=2000; short b; ...
static_cast是一种简单的类型转换,它属于编译时强制转换。它能够进行隐式转换(如int到float,或指针到void*),也可以调用显式转换函数(或隐式转换函数)。const_cast用法示例 下面是static_cast的11个使用场景示例:1. 用于原C风格的隐式类型转换,例如float转int 2. 静态下行转换(static downcast...
p2.y=static_cast<float>(p1.b);// 明确转换int为float C:判断一个类型是否为平凡类型 这块有两个标准库函数可以判断 std::is_trivial:判断类型是否是平凡类型,主要关注构造、析构和赋值操作是否是平凡的。 std::is_trivially_copyable:判断类型是否是可平凡复制的类型,确保类型可以通过简单的内存拷贝进行复制...
使用static_cast:它是精确描述这里所进行的转换的最窄的类型转换。
short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换(如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,编译器允许直接转换。 但若 double a=2000; short b; ...
一般情况下,你可以使用static_cast用于数字类型的转换,如把枚举转换为int或是 float类型。 之所以讲static_cast不够安全,就是指在运行阶段不进行类型检查(和dynamic_cast相比,但是dynamic_cast也有一定的局限性,我们以后再讨论)。 具体用法: ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行...