如何通过已经存在的对象(同一类对象)分配动态分配的对象,而又不更改后者。代码似乎不起作用:

ClassName<T> Object1(parameters);
...
ClassName<T>* pObject2 = new ClassName<T>(parameters);
pObject2 = &Object1;
...some operations on pObject2
delete pObject2

最佳答案

您要做的不是将Object1复制到pObject2指向的内容,而是仅使指针pObject2指向Object1,从而丢失了分配的内存。

这将导致您尝试释放对delete指针时尚未分配的内存,这是未定义的行为,很可能会导致崩溃。

您要做的是在指针*上使用解引用运算符pObject2,获取指针指向的对象,然后分配给该对象:

*pObject2 = Object1;

或在分配时使用该类的复制构造函数:
ClassName<T>* pObject2 = new ClassName<T>(Object1);

09-20 14:32