【发布时间】:2011-03-24 00:27:30
【问题描述】:
我的一项 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 使用的是复制构造函数,所以不是这样。我完全困惑,请帮助。如果我没有得到答案,这会很困扰我。
提前致谢。
【问题讨论】:
-
这个问题是否来自您确定准确可靠的来源?提出它的人是否有可能错误地认为
IntArrays b = a;会使用operator=? -
这是一道作业题,我直接从word文件中复制过来的。我之前搜索了一下,它使用 IntArrays b = a; 的复制构造函数但它是从头开始创建的。
标签: c++ class constructor copy