求解释,警告怎么来的,让它怎么没
#include"iostream"
#include"string.h"
#include"cstdio"
using namespace std;
class Student
{
public: char *name;
int num;
double score;
Student(int a,char *b,double c);
void display()
{
cout<<"num:"<<num<<"\n"<<"name:"<<name<<"\n"<<"score:"<<score<<'\n'<<'\n';
}
};
Student::Student(int a,char *b,double c)
{
num=a;
score=c;
name=new char[strlen(b)+1];
strcpy(name,b);
}
class Graduate:public Student
{
public:
double pay;
Graduate(int a, char *b,double c,double d): Student(a,b,c)
{
pay=d;
}
void display()
{
cout<<"num:"<<num<<"\n"<<"name:"<<name<<"\n"<<"score:"<<score<<'\n'<<"pay="<<pay<<'\n';
}
};
int main()
{Student stud1(1001,"Li",87.5);
Graduate grad1(2001,"Wang",98.5,563.5);
Student *pt=&stud1;
pt->display();
grad1.display();
return 0;
}
[解决办法]
Student::Student(int a, const char *b,double c)
加上const ~
[解决办法]
你没有析构函数也就算了。你竟然new了name 后也不delete掉。
建议定义析构函数,在析构函数里delete