问题描述
- C++运行调试问题。。。。。
#include ""stdafx.h""
#include
using namespace std;class Data_rec
{
public:
Data_rec()
{
name = NULL;
}
~Data_rec()
{
delete[]name;
}
void insert_name(char* pname)
{
delete[]name;
name = new char[strlen(pname) + 1];
strcpy_s(name255 pname);
}
void print()
{
cout << ""Name:"" << name << endl;
}
private:
char* name;
};
////////////////////////////////////////////////////////////////////////class Student :virtual public Data_rec
{
public:
Student() :Data_rec(){ id = NULL;}
~Student(){ delete[]id; }
void insert_id(char* pid)
{
delete[]id;
id = new char[strlen(pid) + 1];
strcpy_s(id25 pid);
}
void print()
{
Data_rec::print();
cout << ""ID:"" << endl;
}
private:
char* id;
};
///////////////////////////////////////////////////////////////////////////////////////class Teacher :virtual public Data_rec
{
public:
Teacher() :Data_rec(){ sal = 0; }
void insert_sal(float psal){ sal = psal; }
void print()
{
Data_rec::print();
cout << ""Sal:"" << sal << endl;
}
private:
float sal;};
///////////////////////////////////////////class Postgrad :public Student
{
public:
Postgrad() :Student(){ dn = NULL; }
~Postgrad()
{
delete[]dn;
}
void insert_dn(char* p)
{
delete[]dn;
dn = new char[strlen(dn) + 1];
strcpy_s(dn25 p);
}
void print()
{
Student::print();
cout << ""Dept name:"" << dn << endl;
}
private:
char* dn;
};
/////////////////////////////////////////////class Tpost :public Teacher public Postgrad
{
public:
Tpost(): Teacher() Postgrad(){}
void print()
{
Teacher::print();
Postgrad::print();
}};
int main()
{
Teacher t;
Tpost tp;
t.insert_name(""Li Min"");
t.insert_sal(5000);
tp.insert_name(""zhang jun"");
tp.insert_sal(1500);
tp.insert_id(""08901"");
tp.insert_dn(""computer"");
t.print();
tp.print();
return 0;
}
今天学习C++时遇到的,编译是成功的,但运行时会出现异常。这是课本上的程序。请各位大神帮忙看看是什么问题。谢谢啦
解决方案
课本上的程序也不对,应该是指针的问题,点中断,仔细检查出错的行
解决方案二:
把id=new char[strlen(pid)+1];上面这句delete []id;去掉,就没事了,要先new才能delete