我開始編寫一個二叉樹,然後提出這個例子,我不知道發生了什麼。因此,這裏的代碼:C++對象指針範圍
#include<iostream>
using namespace std;
struct Node
{
Node *left, *right;
int key;
Node()
{
left = NULL;
right = NULL;
key = 0;
}
Node(int key)
{
left = NULL;
right = NULL;
key = key;
}
};
struct Tree
{
Node* root;
void Add(int k)
{
Node* t;
t->key = k;
root->left = t;
}
Tree(int key)
{
this->root = new Node(key);
}
};
int main()
{
Tree* tree = new Tree(5);
tree->Add(4);
cout<<tree->root->left->key;
return 0;
}
添加功能添加在樹是什麼讓我困惑。所以,有一個指向Node對象的指針,但是沒有使用new關鍵字,並且在我看來,無論如何有堆分配在堆中,因爲我可以到達該對象。不應該超出範圍並被銷燬?爲什麼我可以達到這個目標並打印出它的鑰匙?
未定義的行爲是_undefined_。 –
我投票結束這個問題作爲題外話,因爲要求未定義行爲的實際_workings_是沒用的。 –
我不知道這是未定義的行爲,因爲它編譯在我的電腦上。 – user3199819