2017-03-17 121 views
-1

我不明白第二个参数。 究竟是什么? 最重要的是,他(程序员)使用它创建一个新的Object对象数组,最后是num(变量)大小。C++对象数组+带参考和指针的参数

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

我建议你阅读[良好的C++书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。显然,它是对“对象”指针的引用。有什么不清楚的呢? –

+0

这是丑陋的,但您可以使用[顺时针/螺旋规则](http://c-faq.com/decl/spiral.anderson.html)来破译大多数C和C++声明。 – Rama

+0

AlgirdasPreidžius:所以函数将第二个参数作为名为children的指针的MEMORY ADDRESS,它指向Object类型? – DIMITRIOS

回答

2

从右读它到左:

当你到达一个*,通过指针代替它。
当您到达&时,请将其替换为。

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

+0

我喜欢你的答案,但我发布了一个新的答案,以增加答案的部分。太好了! – gsamaras

1

第二个参数:Object * & children Object *表示children是指向Object类型的指针。 &从呼叫范围接收孩子的副本预防,让我们直接与参数变量来工作,所以当你改变孩子:

children = new Object[num]; 

更改参数变量在呼叫范围和扩展后,函数返回时,你有权访问:

new Object[num] 

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

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

1

它是:

指针到Object

的原因是因为它分配动态内存,他可能想这个变化children在调用者反映参考该功能(可能是main())。