对象数组复制构造函数

时间:2021-01-27 19:14:56

标签: c++

我有一个带有 Point *array 字段的对象 PointArray。我想制作一个复制构造函数:

PointArray::PointArray(const PointArray &pv) {
    size = pv.size;
    array = new Point[size];
    for (int i=0;i<size;i++){
        Point toAdd = Point(pv.array[i].getX(), pv.array[i].getY());
        array[i] = toAdd;
    }
}

这是正确的吗?

1 个答案:

答案 0 :(得分:0)

<块引用>

这是正确的吗?

这取决于。

您设计的复制构造函数应该如何工作?你的构造函数的行为如何?它的行为是否符合您的预期?你的类的不变量是什么?那些不变量是作为构造函数的后置条件维护的吗?


一些问题:

  • 您确定复制元素的循环永远不会抛出?因为如果抛出,则构造函数会泄漏内存。换句话说,它不是异常安全的。
  • 循环看起来毫无意义地复杂。从范围复制有一个标准算法:std::copy
  • 不建议直接拥有指针和分配 new
  • 您似乎毫无意义地重新实现了 std::vector 的有限版本。
相关问题