【发布时间】:2012-01-05 21:29:05
【问题描述】:
我重载了 equals(包括 == 和 !=),它检查两个对象是否相等,然后返回一个布尔值。
不幸的是,它打印的是 0 或 1。我知道它是正确的,但为了便于阅读,我不知道如何让它打印 true 或 false。
我什至尝试过:
if (a.equals(b))
{
return true;
}
return false;
但是,C++ 很顽固,输出 0 或 1。
任何帮助将不胜感激。
编辑 - 打印完成:
cout << "a == b is " << (a == b) << endl;
想要的输出是
a == b 为真
【问题讨论】:
-
如果我错了,有人纠正我,但布尔值不只是一个 uint 枚举吗?
-
@dubvfan 不,
sizeof(bool) == 1在我的平台上,所以不是uint。但它们实际上只是下面的 1 和 0。 -
您提到了打印,但您的代码不包含任何可以输出的内容。请向我们展示完整的代码。我怀疑你的 bool 在输出期间被强制转换为 int。
-
@dubvfan87 C++ 有一个基本的布尔类型,其大小未由标准指定......虽然它可能看起来像
int,但它不是一个......你可以将 35 分配给布尔值,它仍然会测试与== true的相等性。 stackoverflow.com/questions/356726/… -
@SethCarnegie 我看不出有什么区别。您可以为 bool 分配任何值,如果它转换为“真”,那么您可以针对
true测试该 bool,它会起作用。但是,它不会像您分配给它的那样进行测试。这与 C 时代用于实现 bool 的各种技巧不同。以下代码仅打印“b == true”:bool b = 34; if (b == 34) { cout << "b == 34" << endl; } if (b == true) { cout << "b == true" << endl; }
标签: c++ overloading boolean