class A
{
public:
A(){ };
~A(){ };
//stuff
};
class B
{
public:
B(A* a){ pA = a;}
~B(){ };
A* pA;
};
int main()
{
A instOfA = A();
B instOfB = B(&instOfA);
return 0;
}
我不確定〜B()是否應該刪除它的指針數據成員* pA。即在descructor中重新分配指針
~B()
{
if(pA!=nullptr) delete pA;
}
我的猜測是需要刪除,因爲B在A * pA中分配它。
你必須問自己的問題是:'B'擁有'B :: pA;'的對象指針嗎?在這種情況下,它指向'main()'中的'instOfA',它是一個局部變量。局部變量總是由它的範圍所有。你只是刪除了'new'分配的東西。 –
_我的猜測是刪除是必要的,因爲B在A * pA._中分配它'''B''的構造函數在你的例子中沒有任何分配。 – nefas