static_cast 指针
static_cast 指针是将指针强制转换为另一种类型的指针。用于指针类型的 static_cast 操作可以将一个指针类型强制转换为另一个指针类型,但需要注意的是转换前后的类型必须是相关的或有继承关系。例如,将一个指向基类对象的指针强制转换为子类对象的指针,或将一个指向 void 类型的指针强制转换为一个指向具体类型的指针。
下面是一个示例代码:
```cpp
class Ba {
public:
virtual ~Ba() {}武凤霞
};
class Derived : public Ba {
public:
void foo() {}
隶书的特点};
安全方面>煮泡面 int main() {
Ba* ptr1 = new Ba();
Derived* ptr2 = static_cast<Derived*>(ptr1); // 错误
四级时间分配 // 将一个指向基类对象的指针强制转换为子类对象的指针,编译器会报错
王绎 Ba* ptr3 = new Derived();
Derived* ptr4 = static_cast<Derived*>(ptr3);
ptr4->foo(); // 正确,可以调用 Derived 类型的方法
纹身花臂搞笑脑筋急转弯 return 0;
}
```
在本示例中,我们创建了一个名为 Ba 的基类和一个名为 Derived 的子类。然后声明了一个指向 Ba 类型的指针 ptr1,并通过 static_cast 强制将其转换为指向 Derived 类型的指针 ptr2。因为 ptr1 指向的是一个 Ba 类型的对象,而 Derived 类型中还包含了 Ba 类型的成员,所以这个转换是不允许的,编译器会报错。
接着,我们创建了一个指向 Derived 类型的指针 ptr3,并将它转换为指向 Derived 类型的指针 ptr4。这个转换是允许的,因为 Derived 类型的指针可以安全地指向 Ba 类型的对象,而且我们可以通过 ptr4 调用 Derived 类型的方法。