初学者提问,怎么delete整个new对象?
#include <iostream>
class Stringbad
{
private:
int na;
int nb;
public:
Stringbad(int a,int b);
void show();
};
//////////////////////////////////////
void Stringbad::show()
{
cout<<"na="<<na<<endl;
cout<<"nb="<<nb<<endl;
}
//////////////////////////////////////
Stringbad::Stringbad(int a,int b)
{
na=a;
nb=b;
}
/////////////////////////////////////
int main(int argc, char *argv[])
{
using namespace std;
Stringbad* p=new Stringbad(5,8); //请问怎样delete掉
p->show(); // 用new分配来的整个对象 p?
cout<<endl;
delete p; //这句只能delete 成员na,为什么?
cout<<"delete p"<<endl;
p->show();
cin.get();
cin.get();
return 0;
}
c-free的运行结果
na=5
nb=8
delete p
na=0
nb=8 //想当然地nb=0才对呀,为什么呢?