找到类复制结构的问题

时间:2011-03-24 00:27:30

标签: c++ class constructor copy

我的一个c ++任务有问题。它更多的是一个理论问题。这是代码:

//a class implementation
class IntArrays {
public:
   IntArrays(int n): data(new int[n]), size(n) { }
   ~IntArrays() { delete[] data; };
   const int& operator[](int n) const
      { return data[n]; }

   IntArrays(const IntArrays& ar):
      data(new int[ar.size]),
      size(ar.size) {
      std::copy(data, data + size, ar.data);
   }

private:
   int* data;
   int size;
};

//a driver
int main()
{
    IntArrays a(100);
    IntArrays b = a;   // Problem!
      return 0;
}

In 1-2 sentences, explain why the second line of the driver program is problematic.

我真的不知道驱动程序第二行的错误是什么,因为当我运行它很好。起初我以为是因为=运算符没有重载但是IntArrays b = a正在使用复制构造函数,所以不是这样。我完全不知所措,请帮忙。如果我没有得到答案,这将会让我感到非常困扰。

提前谢谢。

1 个答案:

答案 0 :(得分:4)

你的方式是错误的。

std::copy(data, data + size, ar.data);

应该是:

std::copy(ar.data, ar.data + size, data);