考虑一个名为 A 的c ++类。使用对象数组的优缺点是什么:
std::array<A, 10>
而不是指针数组:
std::array<A*, 10>
答案 0 :(得分:8)
以下是重要的区别:
对象数组:
std::array
管理。指针数组:
std::array
管理。nullptr
值,即不指向任何对象这些内容中的任何一个是专家还是骗子取决于您的使用案例。
现在基于意见的部分,作为初学者的提示:在我看来,内存由数组管理的事实清楚地表明数组&#34;拥有&#34;对象。通常不清楚谁拥有指针所指向的对象。所有权的清晰度,以及始终是奖金的缓存效率,使得对象数组在您不确定时是一个很好的默认选择。尽可能在数组中使用对象,在需要时使用指针。当您需要指针时,请考虑std::unique_ptr
是否合适。
答案 1 :(得分: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