为什么函数在声明为int时返回boolean?

时间:2016-07-19 22:57:59

标签: c++ function return-value

我正在学习具有以前Java经验的C ++。我在cplusplus.com中找到了以下示例:

int CDummy::isitme (CDummy& param)
{
  if (&param == this)
  { 
       return true; //ampersand sign on left side??
  }
  else 
  {    
       return false;
  }
}

我的问题是:当我明确地将方法声明为false时,为什么它会返回布尔int?在Java中永远不可能。 该示例的链接是:here.

2 个答案:

答案 0 :(得分:8)

虽然函数的作者最好回答函数为什么做它的功能,但很容易解释为什么C ++允许这样的函数编译而没有问题。

在C ++中,boola fundamental integral type,因此可以自由转换为数字:true变为1false变为零。

答案 1 :(得分:0)

这只是隐式转换的一个实例。在c ++中,1和true(也是0和false)是相同的东西。

您也可以执行类似

的操作
while (1)
   //Infinite loop

bool b = false;
if (b == 0) {
    //This is reached
}
else {
    //This is not
}