C++のポインタに関して質問!
Posted: 2017年9月17日(日) 18:34
例えば、次のようなコードがあるとします。
class A
{
public:
A() { *m_pNum = 5; }
~A() {}
int* Get() { return m_pNum; }
private:
int* m_pNum;
};
class B
{
public:
B() {}
~B() {}
void Func()
{
int* Num;
A* a = new A();
Num = a->Get();
delete a;
cout << *Num << endl;
}
};
int main()
{
B b;
b.Func();
return 0;
}
BのFuncという関数は、Aが持っているm_pNumという変数(ポインタ)を受け取り、aをdeleteしてから受け取った変数を参照しています。
コンパイル自体は通るのですが、実行すると恐らくcoutのところでエラーが出るかと思います。
deleteしたクラスが持っていたポインタを参照しようとしているので当然のことなのですが、
deleteした後、Num変数は何を持っているのかを知りたいです。
長々しく下手な説明になってしまいましたが、どなたかお教えください。m(__)m
class A
{
public:
A() { *m_pNum = 5; }
~A() {}
int* Get() { return m_pNum; }
private:
int* m_pNum;
};
class B
{
public:
B() {}
~B() {}
void Func()
{
int* Num;
A* a = new A();
Num = a->Get();
delete a;
cout << *Num << endl;
}
};
int main()
{
B b;
b.Func();
return 0;
}
BのFuncという関数は、Aが持っているm_pNumという変数(ポインタ)を受け取り、aをdeleteしてから受け取った変数を参照しています。
コンパイル自体は通るのですが、実行すると恐らくcoutのところでエラーが出るかと思います。
deleteしたクラスが持っていたポインタを参照しようとしているので当然のことなのですが、
deleteした後、Num変数は何を持っているのかを知りたいです。
長々しく下手な説明になってしまいましたが、どなたかお教えください。m(__)m