我正在實現一個鏈接列表類的拷貝構造函數,它將進行深層拷貝。這是我的代碼:鏈接列表深層拷貝構造函數
List(const List & rhs) {
Node* rhsFront = rhs.header->next;
Node* prev = header;
while (rhsFront) {
prev->next = new Node(rhsFront->data, nullptr);
rhsFront = rhsFront->next;
prev = prev->next;
}
}
但是,它崩潰這一行:
prev->next = new Node(rhsFront->data, nullptr);
我做了什麼錯?
由於未能在複製構造函數中初始化類成員,導致未初始化的指針解引用和未定義的行爲,從而出錯了。一般來說,如果你的類有一個工作的'insert()'或'append()'函數,可以通過將深層拷貝構造函數委託給默認的拷貝構造函數來實現深拷貝構造函數,遍歷從中複製的列表中的值,然後使用現有的類方法來初始化複製到的列表。這是一個完全錯誤的方式來實現一個拷貝構造函數。 –