我的一个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正在使用复制构造函数,所以不是这样。我完全不知所措,请帮忙。如果我没有得到答案,这将会让我感到非常困扰。
提前谢谢。答案 0 :(得分:4)
你的方式是错误的。
std::copy(data, data + size, ar.data);
应该是:
std::copy(ar.data, ar.data + size, data);