我有以下代碼。我不明白爲什麼在B.GetNum()中調用第一個條件。我怎樣才能確保何時刪除主要是我的B類不嘗試使用已刪除的變量?C++ nullptr檢測
class A
{
public:
A(int num) : m_num(num) {}
int GetNum() { return m_num; }
private:
int m_num;
};
class B
{
public:
B(A* a_) : a(a_) {}
int GetNum()
{
if (a != nullptr)
{
return a->GetNum(); // Why does this branch get called?
}
else
{
return -1;
}
}
private:
A* a;
};
int _tmain(int argc, _TCHAR* argv[])
{
A* a = new A(5);
B b = B(a);
delete a;
a = nullptr;
int result = b.GetNum();
return 0;
}