美好的一天!我正在制作一个使用链表模拟多项式的程序。所以我有两个类:Term和Poly。 Term类有三个私有属性,分别是:int coef,int exp和Term * next。 Poly Class只有一个属性,用于标题节点,声明为Term *标头。我试图覆盖运算符" ="所以我可以这样做:
Poly p1; //creates a header note; basically this is an empty linkedlist
p1.addTerm(4, 5); //adds a term to the polynomial
Poly p2;
p2 = p1; //deletes/clears all the contents of p2 and makes a copy of all the contents of p1
addTerm函数工作正常,因此构造函数也是如此。我想问题是" ="运营商。所以这是我的代码:
Poly Poly::operator =(const Poly &source) {
clearPoly();
Term *t = header;
Term *s = source.header->getNext();
while(s != NULL) {
t->setNext(new Term(s->getCoef(), s->getExp()));
t = t->getNext();
s = s->getNext();
}
return *this;}
请帮助我:(顺便说一句,如果我的问题不清楚,请告诉我。
其他调查结果
在尝试调试之后,我已经缩小了问题范围。所以这就是我发现的。我试着编辑我的operator =的实现。这是
Poly Poly::operator =(const Poly &source) {
clearPoly();
Term *t = header;
Term *s = source.header->getNext();
while(s != NULL) {
t->setNext(new Term(s->getCoef(), s->getExp()));
t = t->getNext();
s = s->getNext();
}
display();
return *this;
}
实现中的显示功能显示所需的输出。但是,在main中,显示功能输出不需要的/垃圾值。
实施中显示功能的结果
5x ^ 6 3x ^ 5 1x ^ 1
主要显示功能的结果
5574864x ^ 5570756 5575824x ^ 5575896 5598264x ^ 5574864
有关这种行为不端的任何想法吗?
答案 0 :(得分:0)
How to clone object in C++ ? Or Is there another solution? 从我看到你想要克隆一个对象。看看这里的答案是否有效。由于某种原因,我无法评论,所以我回答。如果这是正确的答案,请不要回复我。