将C++对象复制到指向新指针的指针处
Copy a C++ object at a pointer to a new pointer
我有一个这样的指针。
MyClass *p; //MyClass is a complex class
我需要创建一个新指针,其中包含 p 指向的对象内的数据副本。复制后,我需要更改我的新对象而不更改 *p 指向的对象。
当我这样做时MyClass *q = p
它会复制指针。正确的方法是什么?
我想做这样的事情:
MyClass *q = &p;
当我现在更改 q 指向的对象的属性时,我不应该影响 *p 处的对象。
请帮我解决这个问题。
如果MyClass
有一个复制构造函数,那么你可以简单地从旧的构造函数构造一个新的,如下所示:
MyClass* p = some_function();
MyClass* q = new MyClass(*p); // use copy constructor
当然,你应该为这种事情使用智能指针:
std::unique_ptr<MyClass> p = some_function();
std::unique_ptr<MyClass> q = std::make_unique<MyClass>(*p); // copy constructor
如果MyClass
是多态的,这将不起作用,在这种情况下,需要一个虚拟clone()
函数。
首先,第二个指针需要指向某个分配的内存,该内存的类型与第一个对象相同:
Myclass *d = something(); //pointing to some object in memory
Myclass *q = new Myclass(); //allocating space in memory for the same type
然后,您可以使用复制运算符复制数据,如下所示:
(*q) = (*d)
相关文章:
- 当我尝试为结构分配新指针时出现堆栈溢出错误
- C++对包含新指针的向量的分配
- 在循环(C++)中用新指针填充映射
- 指针(指向指针)和新/malloc 向量(向量内部)c++
- 在一行中初始化指针(新uint8_t[高度*宽度*3])
- 如何创建指向派生类的新指针,该派生类在C++编译时未知
- 将对象的指针复制到此对象的新指针中
- 更好的方法? 新指针,需要删除吗?
- 为什么这个指针到指针的二维数组像这样分配新的 int
- 将C++对象复制到指向新指针的指针处
- 类方法中的新指针必须强制转换为引用
- 创建指向纯虚拟类的新指针
- 将旧指针数组的元素复制到新指针数组中
- 指向数组的“新”指针的首选方法
- 交换指针,删除第二个对象并创建指向第二个的新指针
- 指向类对象的新指针数组
- 如何展开放置新指针
- 使用和不使用新指针的区别
- Deque emplace_back指向对象的新指针
- 是否有必要使用 'new' 将新指针分配给与指向同一结构的先前存在的指针相同的结构?如果是这样,为什么?