0
A
回答
7
這裏有重要的區別:
對象的數組:
- 對象的內存由
std::array
管理。 - 對象被存儲在連續的存儲器(良好的緩存效率)
- 所有的對象都是相同類型的
- 所有對象存在
- 分配一個元件使得對象指針的
陣列的副本:
- 指向的對象的內存不受包含指針的
std::array
的管理。 - 可以指針存儲到多態類型的一個共同的基礎
- 指針可以具有
nullptr
值即不指向任何對象 - 分配的元件不會使被指向
這些東西中的任何一個是專業版還是騙局都取決於您的使用案例。
現在對於基於意見的部分,作爲初學者的暗示:在我看來,內存由數組管理的事實表明數組「擁有」對象。通常不清楚誰擁有指針指向的對象。所有權的清晰度與高速緩存效率的結合始終是一種獎勵,因此當您不確定時,這些對象陣列是一個很好的默認選擇。如果可以,請在數組中使用對象,當需要時使用指針。當你需要指針時,考慮std::unique_ptr
是否合適。
0
,如果你不希望使用STL陣列,您可以使用自己的陣列
1)數組[10]
或
2)A *陣列[10]
對於#1,類A必須具有默認構造函數。
A needs more memory to hold object
Whenever you assigned an object to any index of the array, copy constructor gets called
Compilation time required is more
#2有沒有必要構造
sizeof(array) = size of pointer * 10
compilation time required is less
There is no need of default constructor or copy constructor
+0
請您解釋一下,指針數組是如何減少編譯時間的。此外,值得注意的是,如果您使用具有非默認構造函數參數的初始化程序列表(需要支持當前標準的編譯器),則不需要默認構造函數。另外值得注意的是,數組和指向對象組合使用的總內存對於指針數組來說更高。 – user2079303 2014-10-02 07:37:32
相關問題
- 1. 初始化指向對象的指針數組中的對象
- 2. 刪除存儲指向某些對象的指針的數組
- 3. 刪除指針數組的指針指向對象
- 4. 在指向Objective-C對象的指針數組上的qsort
- 5. 指向對象數組索引的C++指針
- 6. 必須有指向對象類型C++(數組)的指針
- 7. C++通過指向對象的指針數組訪問對象方法
- 8. 創建對象指針數組C++
- 9. 動態對象指針數組C++
- 10. 指向對象的指針指向C++對象範圍之外
- 11. 指向抽象類的指針數組
- 12. 無法初始化指向對象數組的指針的值
- 13. 指向在類中聲明的對象的指針數組?
- 14. 返回指向二維數組中的對象的指針
- 15. C++ - 指向數組的指針 - 指針
- 16. C++矢量對象與指向對象的指針的向量
- 17. 如何管理指向對象的指針數組?
- 18. 創建指向類對象的指針數組
- 19. 指向對象的指針數組返回jibberish
- 20. 取消分配指向對象的指針數組?
- 21. 初始化指向對象數組的指針
- 22. 設置指向對象的指針,讓對象指向對方
- 23. S4指針指向C的對象struct
- 24. 指向對象開始的指針(C++)
- 25. 銷燬對象指針數組
- 26. 對象數組空指針異常
- 27. 對象數組 - 空指針異常
- 28. 指針數組,共享對象
- 29. 排序指針數組到對象
- 30. 數組對象空指針異常
你喜歡蘋果還是橙子?這完全取決於你想要做什麼。 – quantdev 2014-10-01 11:09:58
他們完全不同。你怎麼看? – ikh 2014-10-01 11:10:17
如果你從Java到C++,我會建議你閱讀關於指針的教程。這可能會澄清這樣的問題。 – Skaarjasaurus 2014-10-01 11:16:17