C++ STATIC_CAST
时间: 2023-11-22 17:06:14 浏览: 100
`static_cast`是C++中的一种类型转换操作符,用于将一种数据类型转换为另一种数据类型。它可以在编译时执行类型检查,因此比C语言中的强制类型转换更加安全。下面是一些`static_cast`的用法:
1.将指针或引用转换为另一种指针或引用类型:
```cpp
int i = 10;double d = static_cast<double>(i); // 将int类型转换为double类型
int* p = &i;
double* pd = static_cast<double*>(static_cast<void*>(p)); // 将int指针转换为double指针
```
2.将枚举类型转换为整数类型:
```cpp
enum Color { RED, GREEN, BLUE };
int i = static_cast<int>(RED); // 将枚举类型转换为int类型
```
3.将整数类型转换为枚举类型:
```cpp
enum Color { RED, GREEN, BLUE };
int i = 0;
Color c = static_cast<Color>(i); // 将int类型转换为枚举类型
```
4.将基类指针或引用转换为派生类指针或引用:
```cpp
class Base {};
class Derived : public Base {};
Base* pb = new Derived;
Derived* pd = static_cast<Derived*>(pb); // 将基类指针转换为派生类指针
```
相关问题
C++ static_cast
C++中的`static_cast`是一种类型转换操作符,用于将一个变量或表达式转换为另一种类型。它可以执行以下类型转换:
1. 用于基本数据类型之间的转换,如int到double的转换。
2. 用于将指向一个类的基类指针转换为指向派生类的指针。
3. 用于将void指针转换为指向任何其他类型的指针。
4. 用于将指向任何类型的指针转换为void指针。
5. 用于将一个表达式转换为另一种类型,如将一个整数转换为浮点数。
总之,`static_cast`被用来执行编译时类型检查,以确保转换是合法的。但是需要注意的是,`static_cast`无法执行动态类型检查,因此如果类型转换在运行时是不合法的,则会导致未定义的行为。
C++static_cast
() 和 C++ static_cast() 的区别是什么?
C语言中的static_cast()是不存在的,而C++中的static_cast()可以用于将一种数据类型转换成另一种数据类型,例如将一个整数类型转换成浮点类型。它是一种静态类型转换,在编译时期即可确定执行结果,而且会进行类型检查以确保类型安全。与其他类型转换操作符相比,static_cast()的转换效率更高,可读性也更强。
阅读全文