C++ 对象数组 + 带有引用和指针的参数

c++ object array + argument with reference and pointer

本文关键字:指针 参数 引用 对象 数组 C++      更新时间:2023-10-16

我不明白第二个参数。到底是什么?最重要的是,他(程序员(使用它来创建一个新的对象数组,最后的大小为 num(变量(。

void expand(const Object &s, Object* &children, int &num)
{
   ...
   children = new Object[num]; // <----
}

从右到左阅读:

当您到达 * 时,将其替换为指针指向。
当您到达 & 时,将其替换为引用 的。

所以children将是:指向Object的指针的引用。

第二个参数:对象* &子项对象* 表示子项是指向对象类型的指针。并防止从调用范围接收子项的副本,并让我们直接使用参数变量,因此当您更改子项时:

children = new Object[num];

在调用作用域中更改参数变量,并在扩展函数返回后,可以访问:

new Object[num]

通过您传递给扩展函数的参数变量。

通过引用传递参数是从函数接收信息的另一种方式(它也有其他用法(。

它是

指向Object的指针的引用

原因是因为它分配动态内存,他可能希望此更改children反映在函数的调用者中(可能是main()(。