我想下面的所有解决方案都是等效的(4 的一部分),但这只是偏好问题吗?
Object* myArray[10]; // 1. C-style
std::array<Object*, 10> myArray; // 2. C++11
boost::ptr_array<Object, 10>myArray; // 3. Boost
std::array<std::unique_ptr<Object>, 10> myArray; // 4. taking ownership of the pointer
为什么 Boost 中没有一个类以类似ptr_array
的方式执行第 4 行的操作?是不是因为如果包含指针数组的类获得所有权并在必要时销毁对象,通常没有充分的理由存储指针数组?
我可以在第 4 行看到的替代方法是拥有一个对象数组而不是对象指针:std::array<Object, 10> myArray
.
编辑:删除了问题中的“最佳方式”,因为它并不真正相关。