我无法理解 c++ 中的以下行为。我使用的是 gcc 4.4.1
#include<iostream>
using namespace std;
class call{
private:
int *ptr;
public :
call()
{
cout<<"\nConstructor called\n";
}
void allocate()
{
ptr=new int[10];
}
void test()
{
cout<<"\nTesting\n";
}
~call()
{
if(ptr)
{
cout<<"\nptr deleted\n";
delete [] ptr;
ptr=NULL;
}
}
};
int main()
{
call *p=new call();
p->allocate();
p->test();
delete p;
p->test();
p->test();
p->allocate();
p->test();
p->test();
return 0;
}
输出 :
Constructor called
Testing
ptr deleted
Testing
Testing
Testing
Testing
在上面的代码中,即使在删除对象 (delete p) 之后,我仍然能够访问该类的成员函数(void test())。如果该对象被删除,c++ 如何允许我访问该类的成员函数。