gpt4 book ai didi

c++ - C++ 中的链表、多项式、重载运算符 << 和 >>

转载 作者:行者123 更新时间:2023-11-30 04:40:49 26 4
gpt4 key购买 nike

我必须构建一个从类 lista(列表)继承的类多项式(polinom)。我必须从多项式类中加、减、乘、除 2 个对象。我有这段代码。我不明白为什么我的析构函数不工作。我还必须重载运算符:+、-、<<、>> 但我不知道该怎么做。

#include <iostream>
#include <conio.h>

using namespace std;

struct nod
{float coef;
int grad;
nod* adr_urm;
};

class lista
{
public:
nod *vf,*sf;
lista();
nod* adaug(nod *&vf,nod*& sf , int gr,float cf);
void afis(nod* vz);
~lista();
};

class polinom : public lista
{public:
polinom();
~polinom();

};




void lista::afis(nod* vz)
{nod *c=vz;
cout<<"Elementele polinomului"<<endl;
int i=0;
while (c)

{if (i) cout<<"+";
cout<<c->coef<<"X^"<<c->grad;
c=c->adr_urm;
i++;
}
cout<<endl<<endl;
}

nod* lista::adaug(nod *&vf,nod*& sf ,int gr,float cf)
{ nod *c=new nod;
c->coef=cf;
c->grad=gr;
c->adr_urm=0;
if (vf==0) vf=sf=c;
else {sf->adr_urm=c;
sf=c;}
return vf;
}

lista::lista()
{vf=0;
}

polinom::polinom()
{vf=0;
}

lista::~lista()
{nod *m=vf, *m1=vf->adr_urm;
while (m1)
{delete m;
m=m1;
m1=m->adr_urm;
}
vf=0;
}

polinom::~polinom()
{nod *man=vf, *man1=vf->adr_urm;
while (man1)
{delete man;
man=man1;
man1=man->adr_urm;
}
vf=NULL;
}




int main()
{
int m,nr,nr1;
float n;
nod* vf=0 ;nod *sf;
nod* varFl=0 ;nod *varFv=0;

polinom l,v;

cout<<"Nr de elemente primul pol nr= ";
cin>>nr;
for (int i=1;i<=nr;i++)
{ cout<<"Elementul "<<i<<endl;
cout<<"Coeficientul = ";
cin>>n;
cout<<"Gradul = ";
cin>>m;
l.adaug(vf,sf,m,n);
varFl=vf;
}
l.afis(varFl);

vf=0;

cout<<"Nr de elemente al doilea pol nr= ";
cin>>nr1;
for (int j=1;j<=nr1;j++)
{cout<<"Elementul "<<j<<endl;
cout<<"Coeficientul = ";
cin>>n;
cout<<"Gradul = ";
cin>>m;
v.adaug(vf,sf,m,n);
varFv=vf;
}
v.afis(varFv);

l.~polinom();
v.~polinom();
_getch();


}

最佳答案

您的析构函数可能运行良好,但您调用了两次,第二次调用可能会导致段错误。像这样挂断电话

l.~polinom()

来自您的代码;自动调用析构函数。

第二,你不需要在polinom中复制lista析构函数;基类的析构函数也会自动调用。

关于c++ - C++ 中的链表、多项式、重载运算符 << 和 >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/732069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com