gpt4 book ai didi

c++ - 从类私有(private)数组返回垃圾数据

转载 作者:行者123 更新时间:2023-11-28 01:08:02 24 4
gpt4 key购买 nike

我有一个类作业,我必须编写一个程序,从用户那里获取一个长度不超过 50 位的数字。我有一个名为 Number 的类,它有一个名为 Value[50] 的数组,用于保存数字的值。数字长度以及数组的使用是分配的要求。

Number类的声明如下:

class Number
{
private:
int Value[50];
int NumberSize;
public:
Number();
Number(int&, int&);
int GetValue();
Number& operator=(const Number&);
};

定义是

Number :: Number(int& NumberValue, int& NewNumberSize)
{
NumberSize = NewNumberSize;
for (int count = NewNumberSize; count > 0; count --)
{
Value[NewNumberSize] = NumberValue % 10;
NumberValue = NumberValue / 10;
cout << Value[NumberSize] << endl;
}
}

int Number :: GetValue()
{
for (int count2 = 0; count2 < NumberSize; count2 ++)
{
cout << Value[count2] << endl;
}
return 0;
}

我省略了多余的信息,例如 #include 指令。我的问题出在函数 Number::GetValue() 上,它是以当前形式编写的,用于测试目的。当我运行程序时

int main()
{
Number blah = Number(12345, 5);
}

(再次,对真实事物的适当简化),我得到以下输出

5
4
3
2
1
2347696
2342900
2347268
2352860
-1082078616

开头的数字 51 应从 Number::Number 处的 cout 中找到(int& NumberValue, int& NewNumberSize) 构造函数,后半部分来自Number::GetValue() 中的cout,虽然取值不是预期的.我期待与第一个输出流相同的值,只是相反。尽管格式是(四个七位正整数和一个十位负整数),但显式值不可重现。请注意,类函数中的 cout 语句仅用于测试目的;)

谁能看出我哪里出错了?

最佳答案

您实际上并没有设置您的值(value)观。

Value[NewNumberSize] = NumberValue % 10

这只是将相同的元素(最后一个元素)设置为新值,并在计算结果时使用相同的值来 cout 结果。 count 不在循环内使用。此外,您可能希望将值 Value[NewNumberSize-1] 设置为 Value[0],而不是将 Value[NewNumberSize] 设置为 值[1]。 (构造函数循环将在计数达到零之前中断)

在不修改简单值时通过引用传递它们不是好的做法。

此外,GetValue() 没有到达元素零,尽管这还没有导致错误的输出。

关于c++ - 从类私有(private)数组返回垃圾数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5095206/

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