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++ がクラスのメンバー関数にアクセスできるようにする方法。