我在二叉搜索树中有一个函数,它返回特定节点的地址:
binary_tree_node*& left( ) { return left_field; }
我注意到“&”表示传递 left_field 的地址。 如果我删除了“&”,是否意味着我在使用下面的函数时会引入编译错误?
root->left()=new binary_tree_node<ItemType>(9);
最佳答案
I note that the "&" means pass the address of the left_field
在这种情况下,“&”表示“引用”而不是“地址”
所以你返回的是指针的引用,而不是指针的地址。
如果没有“&”,这一行将无法编译:
root->left()=new binary_tree_node<ItemType>(9);
因为你会为一个临时指针赋值(left() 函数的返回值)。而如果您使用引用,则返回的指针是您类中的指针。
关于c++ - "&"和通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20102115/