自动析构的问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 23:51:40
rt
程序如下
#include <iostream>
#include <cmath>
using namespace std;

int digit(int a)
{
int i=0;
while(a)
{
a/=2;
i++;
}
return i;
}

int modu(int a,int b)
{
int dia=digit(a),dib=digit(b);
int b1;
if(a<b) return a;
else
{ b1=b<<(dia-dib);
return modu(a^b1,b);
}
}

struct Term
{
int coe;
int exp;
Term *next;
Term(int c,int e,Term *link=NULL)
{
coe=c; exp=e; next=link;
}
Term *insert(int c,int e)
{
next=new Term(c,e);
return next;
}
};

class Poly
{
public:
Poly(int c,int e=-1)
{
first=new Term(c,e);
}
Term *Gethead()
{
return first;
}
void input()
{
Term *p=Gethead();
int n=p->coe,a;
while(--n>=0)
{

并不可能在函数调用之前自动析构,你看到的运行析构函数是这里:
multi函数中第二行 Poly C(c);
这个C是函数体内的局域变量
multi函数中的最后一行 return C;
你在函数体内分配的C,出函数体后就析构了,

要返回对象,应该为Poly加上拷贝构造函数,就行了

有问题就HI我吧