2017-03-17 124 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())。