gpt4 book ai didi

C++,对象数组 VS 指向这些对象的指针数组

转载 作者:太空宇宙 更新时间:2023-11-04 15:18:21 26 4
gpt4 key购买 nike

考虑一个名为 A 的 C++ 类。使用对象数组的优点/缺点是什么:

std::array<A, 10>

而不是指针数组:

std::array<A*, 10>

最佳答案

以下是重要的区别:

对象数组:

  • 对象的内存由 std::array 管理。
  • 对象存储在连续内存中(缓存效率高)
  • 所有对象都是同一类型
  • 所有对象都存在
  • 分配一个元素会复制一个对象

指针数组:

  • 所指向对象的内存不受包含指针的 std::array 管理。
  • 您可以存储指向多态类型公共(public)基础的指针
  • 指针可以有 nullptr 值,即不指向任何对象
  • 分配元素不会复制指向的对象

这些事情是赞成还是反对取决于您的用例。

现在是基于观点的部分,作为对初学者的提示:在我看来,内存由数组管理这一事实清楚地表明数组“拥有”对象。通常不清楚谁拥有指针指向的对象。所有权的明确性,再加上缓存效率总是一个好处,当你不确定时,对象数组成为一个很好的默认选择。尽可能使用数组中的对象,需要时使用指针。而当你需要指针时,考虑一下std::unique_ptr是否合适。

关于C++,对象数组 VS 指向这些对象的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26139961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com