你好,由于某种原因,这段代码没有编译,而且我的一生都无法理解。当它调用析构函数时,它给了我一个错误。有人能告诉我为什么请吗
错误为:
抛出异常test.exe触发了一个断点">
#include <iostream>
using namespace std;
class X {
public:
X(int i)
{
p = new (int);
*p = i;
}
~X() { delete p; }
int* p;
};
int main()
{
X x1(1);
X x2(2);
x2 = x1;
}
因为您分配了
x2=x1;
指针将从x1复制到x2,并且它尝试删除同一对象两次。