C++指针之间转换用什么
时间: 2024-11-22 07:38:38 浏览: 15
C++中指针的使用艺术
在C++中,指针之间的转换通常取决于它们指向的数据类型以及内存布局。以下是几种常见的指针转换情况:
1. 同类型的指针转换:如果两个指针都指向同一类型的数据,例如都是整型指针int*,那么不需要特殊声明就可以直接互相赋值。
```cpp
int* ptr1 = new int;
int* ptr2 = ptr1; // 直接赋值,无需转换
```
2. 指向派生类的基类指针到指向基类指针:如果有一个基类指针可以安全地指向派生类的对象,那么可以直接赋值给基类指针,但是不能通过该基类指针访问派生类特有的成员。
```cpp
class Base {};
class Derived : public Base {};
Base* basePtr = new Derived(); // 安全,但只能访问Base的公共部分
```
3. 具有兼容性的指针:动态分配的void*指针可以转换为其他类型的指针,但这需要使用static_cast进行显式类型转换。
```cpp
void* voidPtr = new int;
int* intPtr = static_cast<int*>(voidPtr); // 显式转换
delete intPtr;
```
阅读全文