C++ 指针对象拷贝副本
时间: 2024-11-30 22:15:44 浏览: 4
指针学习的方法-C++语言中的指针
在C++中,指针对象的拷贝通常分为浅拷贝和深拷贝。浅拷贝复制的是指针本身,而不是它所指向的数据。对于原始类型如int、char等,拷贝指针实际上是相同的内存地址,因为它们没有内部状态。但是,如果指针是指向动态分配的对象或者复杂数据结构,如自定义类的对象,那么浅拷贝只是复制了指针,新创建的指针仍然指向原来的对象。
深拷贝(也称为值拷贝)则是对指针所指向的内容进行完整的复制,通常是通过new操作为新的指针分配内存,并将原来对象的副本复制到这个新位置。如果你有一个指向类对象的指针,并希望完全复制这个对象,就需要显式地提供深拷贝构造函数或使用`std::unique_ptr`这样的智能指针。
```cpp
// 浅拷贝示例 (仅复制指针)
int* ptr1 = new int(5);
int* ptr2 = ptr1; // shallow copy, both point to the same memory
// 深拷贝示例 (复制对象)
class MyClass {
public:
MyClass(int value) : value(value) {}
private:
int value;
};
MyClass* ptr1 = new MyClass(10);
MyClass* ptr2 = new MyClass(*ptr1); // deep copy, ptr2有自己的对象副本
```
阅读全文