我不明白第二个论点。 它究竟是什么? 最重要的是,他(程序员)使用它来创建一个新的Object对象数组,最后是num(变量)大小。
void expand(const Object &s, Object* &children, int &num)
{
...
children = new Object[num]; // <----
}
答案 0 :(得分:2)
从右到左阅读:
当你到达*
时,用指针替换它。
当您到达&
时,请将其替换为。
所以children
将是:
指向Object
的指针的引用。
答案 1 :(得分:1)
第二个论点:对象*和孩子 Object *表示children是指向Object类型的指针。 &安培;防止从调用范围接收子代的副本,并允许我们直接使用参数变量,因此当您更改子代时:
children = new Object[num];
更改调用范围中的参数变量,在展开函数返回后,您可以访问:
new Object[num]
通过你传递给扩展函数的参数变量。
通过引用传递参数,是从函数接收信息的另一种方式(它还有其他用法)。
答案 2 :(得分:1)
这是:
指向
的引用Object
原因是因为它分配了动态内存,他可能希望对children
的更改反映在函数的调用者中(可能是main()
)。