C++ 复制一个C++;对象的指针指向新指针

C++ 复制一个C++;对象的指针指向新指针,c++,C++,我有一个这样的指针 MyClass *p; //MyClass is a complex class 我需要创建一个新指针,该指针的数据副本位于p所指对象的内部。复制后,我需要更改我的新对象,而不更改*p所指的对象 当我执行MyClass*q=p时,它复制指针。正确的方法是什么 我想做一些类似的事情: MyClass *q = &p; 当我现在改变由q指向的对象的属性时,我不应该影响*p处的对象 请帮我解决这个问题。如果MyClass有一个复制构造函数,那么您可以简单地从旧构造函数

我有一个这样的指针

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
std::unique_ptr p=some_函数();
std::unique_ptr q=std::make_unique(*p);//复制构造函数

如果
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)

MyClass
是否可复制?你会做
MyClass a,b;a=b?我如何找到它?它是由其他人创建的。说明(文档)?或者你可以试试看。你能告诉我怎么做吗it@Ron说得好。我在键入
p
时错过了
*
,谢谢,我会检查一下。你能推荐一本好的C++书籍吗?如果我搜索,网上有很多,但请推荐一本。@harsh这是一本推荐给初学者的书:非常感谢@GalikThank@you我得到了另一个答案,所以我没有检查这个。