class LinkedList {
public:
LinkedList();
~LinkedList();
LinkedList& operator= (const LinkedList& other);
void insert(int val); // adds a node
private:
LinkedListNode* head;
};
使用默认的赋值运算符,了解浅复制通过代码
list_one.head = list_two.head;
我的理解是,list_one和list_two现在共享最初指向list_two结构的元素。
当下面的析构函数运行时,会发生什么情况?为什么程序崩溃?
~list_two();
~list_one();
可有人请提供详细,直观的解释?谢谢!
您需要显示析构函数的定义 – Chris
不知何故,我认为“详细”和“直观”的解释是相反的。 – Almo
我不认为它会崩溃,除非你的析构函数试图删除头成员。如果析构函数这样做,那么因为当两个对象都被破坏时,两个对象指向相同的东西,那么被指向的东西会被删除两次。 –