使用复制构造函数复制动态分配的对象数组

时间:2013-05-01 14:29:19

标签: c++ memory copy

假设我有一个以下类,基本上是一个普通的数组包装器:

 template<class T>
 SimpleArray {
   T * array;
   SimpleArray(): T(NULL) {}
   SimpleArray(T * array_) {
     // what goes here?
   }
   // TODO: copy constructor and copy assignment
   ~SimpleArray() {
     delete[] array;
   }
 };

如何将元素从一个数组复制到另一个数组?如果它是一个简单的类型,我可以使用像memcpy这样的东西,它会工作得很好。但是如果T是需要深度复制的复杂类型呢?例如,如果T有一个成员数组,而不是浅层复制,那么会创建几个指向同一资源的T个对象,这是一个灾难。

基本上,我需要一些方法来创建数组的深层副本。有什么建议吗?

我知道我可以使用标准库中的某些东西,但我有理由不这样做。 SimpleArray旨在以T*的形式轻松访问对象的内部存储空间。就我而言,没有STL容器支持这种功能。

1 个答案:

答案 0 :(得分:1)

推荐使用自己的动态数组是不可取的。如果您只需要通过T *访问基础数据,那么您可以使用vec.data()(仅限c ++ 11)或&amp; vec.front()。