在下初来乍到,提一个问题
#include <iostream.h>
class Root
{
public:
Root();
~Root();
virtual Display();
};
Root::Root()
{
cout<<"Root class created.\n";
}
Root::~Root()
{
cout<<"Root class destroyed.\n";
}
Root::Display()
{
cout<<"This is ROOT.\n";
}
class Casper:protected Root
{
public:
Casper() { cout<<"Casper class created.\n"; }
~Casper() { cout<<"Casper class destroyed.\n"; }
virtual Display() { cout<<"This is Casper.\n";}
};
class Balthasar:protected Root
{
public:
Balthasar() { cout<<"Balthasar class created.\n"; }
~Balthasar() { cout<<"Balthasar class destroyed.\n"; }
virtual Display() { cout<<"This is Balthasar.\n";}
};
class Melchior:protected Root
{
public:
Melchior() { cout<<"Melchior class created.\n"; }
~Melchior() { cout<<"Melchior class destroyed.\n"; }
virtual Display() { cout<<"This is Melchior.\n";}
};
class Magi:public Casper,protected Balthasar,protected Melchior
{
public:
Magi();
~Magi();
virtual Display();
};
Magi::Magi()
{
cout<<"Magi class created.\n";
}
Magi::~Magi()
{
cout<<"Magi class destroyed.\n";
}
Magi::Display()
{
cout<<"This is Magi.\n";
}
void main(void)
{
cout<<"------------------------------------------------------"<<endl;
Magi *Mg1;
Mg1=new Magi;
Mg1->Display();
Root *Rt1;
Rt1=new Root;
Rt1->Display();
Mg1->Casper::Display();
delete Mg1;
delete Rt1;
Mg1=new Magi[10];
Magi *pMg;
pMg=Mg1;
for(int i=0;i<10;i++,Mg1++)
Mg1->Display();
delete pMg;
cout<<"======================================================"<<endl;
}
这个程序为什么总是在最后输出====================之后加上一个null pointer assigned?而如果删除最后cout就没有null pointer了?
问题点数:20、回复次数:7Top
1 楼oustar(欧文)回复于 2003-02-04 16:55:23 得分 11
"delete pMg;"is wrong!
Should be "delete []pMg;Top
2 楼qhgary(Gary)回复于 2003-02-04 22:52:31 得分 5
delete []pMg;Top
3 楼MagiSu(为GPA奋斗中……)回复于 2003-02-11 14:09:15 得分 0
谢谢大家!Top
4 楼qhgary(Gary)回复于 2003-02-11 22:31:27 得分 0
给分阿Top
5 楼CodeSaint(下划线)回复于 2003-02-14 17:14:47 得分 2
delete []pMg;
Top
6 楼ysharp(*除运气*态度决定一切*)回复于 2003-02-16 20:47:45 得分 2
delete []pMg;
Top
7 楼DDDTOO(DDDTOO)回复于 2003-02-17 00:02:03 得分 0
处女贴~!~
大家以后关照关照Top




