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
我不認爲它會崩潰,除非你的析構函數試圖刪除頭成員。如果析構函數這樣做,那麼因爲當兩個對象都被破壞時,兩個對象指向相同的東西,那麼被指向的東西會被刪除兩次。 –