繁体   English   中英

将指针处的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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM