所以,基本上,我正在做一個家庭作業,我有一個鏈表與多項式係數和指數。當不包含複製c-tor時,退出main(析構函數)時代碼會崩潰。使用複製c-tor不會發生,但我想知道爲什麼'因爲我沒有明確地在任何地方調用複製c-tor。這只是一段代碼。 Coef函數在列表中添加參數exp和coef的節點,所以我不認爲它需要包含在內。代碼工作,但在析構函數崩潰(沒有複製構造函數)
CPList :: ~CPList()
{
while (!isEmpty())
deleteFromHead();
}
void CPList :: deleteFromHead()
{
CPNode* tmp=head;
if (head==tail)
head=tail=NULL;
else head=head->next;
delete tmp;
}
CPList* CPList :: mul (CPList p1, CPList p2)
{
CPList* res = new CPList;
CPNode *first, *second;
for (first=p1.head; first!=NULL; first=first->next)
for (second=p2.head; second!=NULL; second=second->next)
res->coef(first->exp+second->exp, first->coef*second->coef);
res->check();
return res;
}
它在該代碼之後,在閉括號處崩潰。
int main()
{
...
ptr=p3.mul(p1, p2);
ptr->printall();
}
當包含複製c-tor時,它正常工作。
如果您不打算調用copy-ctor或支持它,則可以通過C++ 11的語法('CPList(const CPList&)= delete;')將其刪除或聲明它作爲'private:'。這樣做會立即告訴你這個問題根源在哪裏。如果沒有一個有效的* copy-ctor來爲具有動態成員的類授予[Rule of Three/Five](http://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming)),那麼遲早會像這樣綁定自己的軟管。 – WhozCraig 2013-03-23 03:23:23