0
說,如果我有像這樣定義一個二叉樹節點:(和只是假設所有成員都是公共爲了方便...)曖昧調用類成員的參考
class node
{
public:
int v;
node* left;
node* right;
//member functions....
}
我有兩個節點的指針命名爲A B和運行以下腳本:
node* A;
node* B;
A->left = B;
A->left = NULL;
是否讓b指向了NULL或它只會改變A的左子指針(即這個 - >留在* A)和B仍然是它用來指向?
如果前一種情況屬實,如何在不影響B的情況下更改A->左邊的值?
TIA!
UB是沒有必要的崩潰:/ 。 – Jarod42
@ Jarod42,在這個確切的情況下,有99.84%的概率(值被測量和準確:)),所以我決定不深入研究它。 「這是UB」聽起來像「它可能會起作用,但很可能因某種原因而在某處斷裂」。在這種情況下(我們將垃圾值作爲指針取消引用並嘗試在其中寫入),它會在任何地方崩潰(幾乎)。除非OP非常幸運,否則他的編譯器非常詼諧。不過,如果你願意,我現在編輯答案,使其更具體。 – FreeNickname
謝謝。是的,我忘了初始化型A和B(抱歉,因爲我更專注於問題本身,而不是代碼的代碼,只要確保訪問A->左基本上訪問的地址(A +的sizeof (int)),對嗎?(即這個 - >而不是B)) –