[英]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.