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

时间:2017-03-17 20:27:11

标签: c++ arrays function parameters dynamic-memory-allocation

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

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

3 个答案:

答案 0 :(得分:2)

从右到左阅读:

当你到达*时,用指针替换它。
当您到达&时,请将其替换为。

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

答案 1 :(得分:1)

第二个论点:对象*和孩子 Object *表示children是指向Object类型的指针。 &安培;防止从调用范围接收子代的副本,并允许我们直接使用参数变量,因此当您更改子代时:

children = new Object[num];

更改调用范围中的参数变量,在展开函数返回后,您可以访问:

new Object[num]

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

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

答案 2 :(得分:1)

这是:

  

指向Object

的引用

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

相关问题