我不明白第二個參數。 究竟是什麼? 最重要的是,他(程序員)使用它創建一個新的Object對象數組,最後是num(變量)大小。C++對象數組+帶參考和指針的參數
void expand(const Object &s, Object* &children, int &num)
{
...
children = new Object[num]; // <----
}
我不明白第二個參數。 究竟是什麼? 最重要的是,他(程序員)使用它創建一個新的Object對象數組,最後是num(變量)大小。C++對象數組+帶參考和指針的參數
void expand(const Object &s, Object* &children, int &num)
{
...
children = new Object[num]; // <----
}
從右讀它到左:
當你到達一個*
,通過指針代替它。
當您到達&
時,請將其替換爲。
所以children
將是: 指向Object
的指針的引用。
我喜歡你的答案,但我發佈了一個新的答案,以增加答案的部分。太好了! – gsamaras
第二個參數:Object * & children Object *表示children是指向Object類型的指針。 &從呼叫範圍接收孩子的副本預防,讓我們直接與參數變量來工作,所以當你改變孩子:
children = new Object[num];
更改參數變量在呼叫範圍和擴展後,函數返回時,你有權訪問:
new Object[num]
通過您傳遞給參數變量擴展函數。
通過引用傳遞參數是從函數接收信息的另一種方式(它也有其他用法)。
它是:
指針到
Object
的原因是因爲它分配動態內存,他可能想這個變化children
在調用者反映參考該功能(可能是main()
)。
我建議你閱讀[良好的C++書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。顯然,它是對「對象」指針的引用。有什麼不清楚的呢? –
這是醜陋的,但您可以使用[順時針/螺旋規則](http://c-faq.com/decl/spiral.anderson.html)來破譯大多數C和C++聲明。 – Rama
AlgirdasPreidžius:所以函數將第二個參數作爲名爲children的指針的MEMORY ADDRESS,它指向Object類型? – DIMITRIOS