C++ 为什么这段代码不能正常工作???我的意思是,为什么我运行它时它没有显示任何内容?
重载方法有什么问题吗?我真的认为它应该有效,但它没有 //重载运算符==C++ 为什么这段代码不能正常工作???我的意思是,为什么我运行它时它没有显示任何内容?,c++,overloading,C++,Overloading,重载方法有什么问题吗?我真的认为它应该有效,但它没有 //重载运算符== BIGINT& BIGINT::operator==(const BIGINT& bn) { for (int i = 0;i < big_number.size();i++) { big_number[i] == bn.big_number[i]; } return *this; } //重载运算符这是对计算资源的浪费: for (int i = 0
BIGINT& BIGINT::operator==(const BIGINT& bn)
{
for (int i = 0;i < big_number.size();i++)
{
big_number[i] == bn.big_number[i];
}
return *this;
}
//重载运算符这是对计算资源的浪费:
for (int i = 0;i < big_number.size();i++)
{
big_number[i] == bn.big_number[i];
}
return *this;
循环在找到第一组不相等的插槽时终止。搜索数组的其余部分没有意义。只要有一个不等式就可以证明等式是错误的
编辑1:容器的长度是否相等
要使容器相等,它们必须具有相同的大小或相同的元素数
因此,等式函数现在变为:
bool BIGINT::operator==(const BIGINT& bn)
{
if (big_number.size() != bn.big_number.size())
{
return false;
}
for (int i = 0;i < big_number.size();i++)
{
if (big_number[i] != bn.big_number[i])
{
return false;
}
}
return true;
}
哦,天哪,文字之墙。当您在调试器中通过它时发生了什么?请创建一个调试器并将您的问题包含在内。这是许多不相关的代码。调试器。使用调试器。或者使用古老的打印语句调试艺术。具体来说,哪种语句不起作用?实际价值是多少?期望值是多少?复制问题的输入是什么?我认为屏幕上应该显示125,而不是-@托马斯马修斯
BIGINT& BIGINT::operator+=(const BIGINT& bn)
{
int size;
int k = 0;
if (bn.big_number.size()>big_number.size()) size = big_number.size();
else size = bn.big_number.size();
for (int i = size - 1;i > 0;i--)
{
if (k)
{
if (big_number[i] + bn.big_number[i]>9)
{
big_number[i] = big_number[i] + bn.big_number[i] - 10 + 1;
k = 1;
}
else
{
big_number[i] = big_number[i] + bn.big_number[i] + 1;
k = 0;
}
}
else
{
if (big_number[i] + bn.big_number[i]>9)
{
big_number[i] = big_number[i] + bn.big_number[i] - 10;
k = 1;
}
else
{
big_number[i] = big_number[i] + bn.big_number[i];
k = 0;
}
}
}
return *this;
}
BIGINT& BIGINT::operator==(const BIGINT& bn)
{
for (int i = 0;i < big_number.size();i++)
{
big_number[i] == bn.big_number[i];
}
return *this;
}
ostream& operator<<(ostream& out, const BIGINT& bn)
{
for (int i = 0;i < bn.big_number.size();i++)
{
out << bn.big_number[i];
}
return out;
}
int main()
{
BIGINT a(123);
BIGINT b(2);
BIGINT c;
c = a + b;
cout << c << endl;
system("pause");
return 0;
}
for (int i = 0;i < big_number.size();i++)
{
big_number[i] == bn.big_number[i];
}
return *this;
bool BIGINT::operator==(const BIGINT& bn)
{
for (int i = 0;i < big_number.size();i++)
{
if (big_number[i] != bn.big_number[i])
{
return false;
}
}
return true;
}
bool BIGINT::operator==(const BIGINT& bn)
{
if (big_number.size() != bn.big_number.size())
{
return false;
}
for (int i = 0;i < big_number.size();i++)
{
if (big_number[i] != bn.big_number[i])
{
return false;
}
}
return true;
}