我正在学习具有以前Java经验的C ++。我在cplusplus.com中找到了以下示例:
int CDummy::isitme (CDummy& param)
{
if (¶m == this)
{
return true; //ampersand sign on left side??
}
else
{
return false;
}
}
我的问题是:当我明确地将方法声明为false
时,为什么它会返回布尔int
?在Java中永远不可能。
该示例的链接是:here.
答案 0 :(得分:8)
虽然函数的作者最好回答函数为什么做它的功能,但很容易解释为什么C ++允许这样的函数编译而没有问题。
在C ++中,bool
为a fundamental integral type,因此可以自由转换为数字:true
变为1
,false
变为零。
答案 1 :(得分:0)
这只是隐式转换的一个实例。在c ++中,1和true(也是0和false)是相同的东西。
您也可以执行类似
的操作while (1)
//Infinite loop
或
bool b = false;
if (b == 0) {
//This is reached
}
else {
//This is not
}