gpt4 book ai didi

c++ - 试图修复我的类笔记

转载 作者:行者123 更新时间:2023-11-28 05:59:48 27 4
gpt4 key购买 nike

我需要帮助才能正常运行。该程序假设显示数组编号和其中一个索引的编号 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;
}

最佳答案

您的代码有很多问题。

首先,正如@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);

否则它复制指针而不是值。它是一个浅拷贝,但你需要一个深拷贝,

强烈建议在类中使用指针时添加析构函数以删除分配的内存。

关于c++ - 试图修复我的类笔记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33493976/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com