C++等号重载遇到问题
发现如果直接LinkList n=m;
vs studio 会冒出一个比较模糊的断点调试
我一开始以为是函数体写得不对,原来是改成
LinkList n;
n=m;
才可以。现在还不知道为什么。
顺便贴一下自己写的等号代码
void LinkList::operator =(const LinkList& l) {
cout << "等号运算符重载" << endl;
// 如果是对象为空, 则直接返回
if (l.pHead == nullptr) return;
if(pHead!=nullptr){
Node* tem = pHead;
for (pHead = pHead->next; pHead; pHead = pHead->next) {//遍历逐个删除
delete tem;
tem = pHead;
}
delete tem;
}
//删除最后一个
pHead = new Node;
pHead->data = l.pHead->data;
Node* end = this->pHead;
// 复制等号右边对象的成员值到等号左边对象的成员
for (Node*p = l.pHead->next; p; p=p->next) {
end->next = new Node;
end = end->next;
end->data = p->data;
}
end->next = nullptr;
}