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. 在指向Objective-C对象的指针数组上的qsort
- 3. 指向对象数组索引的C++指针
- 4. 创建对象指针数组C++
- 5. 指向抽象类的指针数组
- 6. C++ - 指向数组的指针 - 指针
- 7. 取消分配指向对象的指针数组?
- 8. 指向对象的指针数组返回jibberish
- 9. 创建指向类对象的指针数组
- 10. 设置指向对象的指针,让对象指向对方
- 11. 指向对象开始的指针(C++)
- 12. 对象数组 - 空指针异常
- 13. 指针数组,共享对象
- 14. 如何reslove指针指向数组从指针到单个对象
- 15. C++ - 指向向量的指针数组?
- 16. 对象 - 对象中的对象 - 这些对象的数组
- 17. C++对象指针
- 18. 指针数组和指针指向一个数组在C++
- 19. 在C++中制作一个指向结构或对象的指针数组
- 20. VS 2008 C++对象数组
- 21. 如何对指针数组指向的数组进行排序?
- 22. C++对象数组+带参考和指针的参数
- 23. 指向数组的指针数组,其中每个指针指向数组
- 24. 指向C++中的函数对象的指针
- 25. 指向10个NodeLists数组的指针? OR包含指向10个节点列表对象的数组
- 26. 指向数组的指针
- 27. 原始对象的C++指针和复制对象的指针
- 28. 指向指针数组的指针是?
- 29. C++指向int数组的指针
- 30. C++指向不同数组的指针
你喜欢苹果还是橙子?这完全取决于你想要做什么。 – quantdev 2014-10-01 11:09:58
他们完全不同。你怎么看? – ikh 2014-10-01 11:10:17
如果你从Java到C++,我会建议你阅读关于指针的教程。这可能会澄清这样的问题。 – Skaarjasaurus 2014-10-01 11:16:17