我需要帮助才能让它正常运行。程序应该显示数组编号和其中一个索引的数字78。当我尝试运行它时,我没有得到任何编译器错误,但它立即从程序中关闭。
class Vector
{
public:
Vector (int number_of_elements);
int num;
int *p;
};
int main()
{
Vector va(10);
va.p = new int[va.num];
for (int i = 0; i < va.num; i++)
{
va.p[i]=i;
for (int i = 0; i < va.num; i++)
{
cout << va.p[i] << endl;
}
}
Vector vb(va);
vb.p[0] = 78; //if you switch these 3 lines with the 3 above 78 gets printed out everyline
for (int i = 0; i < vb.num; i++)
{
cout << vb.p[i] << endl;
}
return 0;
}
Vector::Vector(int number_of_elements)
{
num = number_of_elements;
}发布于 2015-11-03 16:06:00
你的代码有很多问题。
首先,正如@Pavlin所说,添加一个按键来停止控制台终止。
你有一个内存泄漏。你有
va.p = new int[va.num];
you have to delete it like this
delete[] va.p第二个问题是:
Vector vb(va); 此语句从现有对象创建对象。它使用一个特殊的函数,称为复制构造函数。因为你有动态分配的内存,所以你必须像这样提供你自己的拷贝构造函数:
Vector(const& Vector tmp) { // code here);否则,它将复制指针而不是值。这是一个浅拷贝,但你需要一个深层拷贝,
当你在一个类中使用指针时,最好添加一个析构函数来删除分配的内存。
https://stackoverflow.com/questions/33493976
复制相似问题