class Stud
{
 char *no;
 char *name;
 double deg;
 static double sum;
 static int num;
    public:
  void setdata(char *,char *,double );
  void disp();
  static double avg();
  ~Stud();
};
/*1. 设计一个学生类Stud,包括学号(no)、姓名(name)、和成绩(deg)数据成员,两个静态变量sum和num,
分别存放总分和人数,另有两个普通成员函数setdata()和disp(),分别用于赋值和输出成员数据,
另有一个静态成员函数avg(),它用于计算平均分。在main()函数中定义一个对象数组用于存储输入的学生数据,
要求输出这些学生数据并计算平均分。*/
#include<iostream.h>
#include"Stud.h"
#include<string.h>
void Stud::setdata(char *x,char *y,double d)
{
 no=new char[strlen(x)+1];
 strcpy(no,x);
 name=new char[strlen(y)+1];
 strcpy(name,y);
 deg=d;
 sum+=deg;
 num++;
}
void Stud::disp()
{
 cout<<no<<'\t'<<name<<'\t'<<deg<<endl;
}
Stud::~Stud()
{
 delete []no;
 delete []name;
}
double Stud::sum=0;
int Stud::num=0;
double Stud::avg()
{
 cout<<"这"<<num<<"个同学的平均分是:"<<sum/num<<endl;
 return sum/num;
}
void main()
{
 int i=0,j;
 Stud a[20];
 char num[30],name[20];
 double score;
 cout<<"请输入学生的学号、姓名和成绩(以'@'结束)。\n";
 while (1)
 {
  cin>>num;
  if (num[0]=='@')
   break;
  cin>>name>>score;
  a[i++].setdata(num,name,score);
 }
 cout<<"  学号"<<'\t'<<"姓名"<<'\t'<<"成绩"<<endl;
 for (j=0;j<i;j++)
  a[j].disp();
 Stud::avg();
}
为什么最后运行的结果还是有问题?而去掉了析构函数就可以了,这是为什么?能不能不去掉析构函数将这个程序运行出来?