【问题标题】:Copy dynamically allocated array of objects with copy constructor使用复制构造函数复制动态分配的对象数组
【发布时间】:2013-05-01 14:29:19
【问题描述】:

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

 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 容器支持这样的功能。

【问题讨论】:

标签: c++ memory copy


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-02-26
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 2018-09-10
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多