2016-08-23 19 views
0

我一直很困惑這個問題很長一段時間,我不知道這個問題屬於哪個領域的計算機科學。如果變量的成員試圖刪除該變量會怎麼樣?會員是否仍然存在?

更具體地說,假設我們有一個變量a並且它是一個對象。 ba的成員,它也是一個對象。

如果b有一種方法可能破壞a?這可能發生嗎?如果可以,ba被銷燬後仍然存在?

我覺得這個問題不同於葉節點試圖刪除它的父節點。

結果因語言而異?

如果描述不夠清楚,我還沒有真正遇到真實案例,我感到抱歉。

回答

0

這取決於語言。

我想大多數語言不會讓你明確地銷燬一個對象,所以這種情況不會發生。在程序無法再訪問它們時,對象被許多語言(例如Java,Perl,JavaScript,Python等)所銷燬,而對象本質上是引用,即a有一個成員b僅僅意味着a保留對b的引用,因此如果a消失,則b(只要您仍然有其他一些對b的引用)沒有任何反應。

在像C++這樣的語言中,你可以明確地銷燬對象。然後會發生什麼取決於其他詳細信息:如果ba的直接成員,則b將與a一起銷燬(如果您仍然有指針或對b的引用,則會變成「懸掛」,即嘗試錯誤訪問它)。另一方面,如果僅從a指出或引用b,則它保持活着。

+0

謝謝。由於我想進一步討論這個問題,我應該提及哪種材料?編譯器? (我不是CS專業,但我想了解更多關於此的信息) –