对班级成员参考的模糊调用

时间:2016-03-16 07:25:02

标签: c++ pointers this

假如我有一个像这样定义的二叉树节点:(并且假设所有成员都是公共的以方便......)

    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!

1 个答案:

答案 0 :(得分:3)

不,它没有。 A->left = NULL仅更改A->left的值。

注意:我假设AB已经以某种方式初始化,因为如果你运行

node* A; //uninitialized
node* B; //uninitialized
A->left = B;
A->left = NULL;
你会崩溃的。

更新/澄清:我的意思是,最有可能的。但即使它会起作用(例如,由于你的惊人(缺乏)运气,你可能会得到一个指向有效内存区域的垃圾值),它也不会有任何好处。如果你得到一个有效的记忆区域,写在那里会带来一些理想的结果,立即停止调试,去附近的赌场,你有一个幸运的日子:)