我真的很困惑,为什么这个拷贝构造函数不起作用!我创建的iter
指针指向与head
相同的ListNode,但是当我将内容从s
复制到it
,head
和{{1没有连接!
换句话说,当打印头时,只有第一个字符在那里,但如果我要遍历iter
,列表的其余部分就在那里。
为什么不是iter
和iter
指向相同的对象?!
注意:这是一个链接列表,用于实现名为MyString的类。
head
答案 0 :(得分:3)
您似乎没有将列表附加到任何地方。
试试这个。
MyString::MyString( const MyString & s ) {
if ( s.head == 0)
head = 0;
else {
head = new ListNode (s.head -> info);
++ NumAllocations;
ListNode *iter = head;
for (ListNode *ptr = s.head -> next; ptr != 0; ptr = ptr ->next) {
iter -> next = new ListNode (ptr -> info);
iter = iter -> next;
++ NumAllocations;
}
printList(head);
}
}
注意iter-> gt的附件。你只是在创建一个新节点并且什么都不做。