我已经读过,如果我们的类中有指针,那么我们需要实现自己的复制构造函数;否则,两个类将具有指向相同内存位置的指针,并且在其中一个上调用 delete 也会使另一个为空。我试图通过编写如下代码来模拟上述情况:
class A
{
private:
int *p;
public:
A()
{
p = new int(10);
}
~A()
{
delete p;
cout << "Calling destructor" << endl;
}
};
int main(int argc, char **argv)
{
A a;
A aa = a;
}
我预计会引发一些异常,因为我没有明确声明我的复制构造函数并且我也在使用指针。但程序运行完美。任何人都可以提出修改建议,以便我能够理解在什么情况下会发生异常?