bha*_*esh 0 c++ copy-constructor
我已经读过,如果我们在类中有指针,那么我们需要实现自己的复制构造函数; 否则,两个类将指向同一个内存位置的指针,并且在其中一个类上调用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;
}
Run Code Online (Sandbox Code Playgroud)
我期待抛出一些异常,因为我没有明确声明我的拷贝构造函数,我也在使用指针.但程序运行完美.任何人都可以建议修改,以便我能够理解在什么条件下会发生异常?
您的代码执行delete两次相同的指针.这是未定义的行为,未定义行为的可能症状之一是它似乎可以工作.(根据我的经验,最常见的症状是一切都很完美,直到你向公众展示它,然后它开始左右撞击.)