为什么该函数在声明为 int 时返回布尔值?

Why the function returns boolean when it's declared int?

本文关键字:返回 布尔值 int 函数 声明 为什么      更新时间:2023-10-16

我正在学习C++,之前有Java经验。我在cplusplus.com中发现了以下示例:

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

我的问题是:当我明确声明该方法为int时,为什么它返回布尔false?这在Java中是不可能的。示例的链接是:此处。

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

在C++中,bool是一个基本积分类型,因此它可以自由地转换为一个数:true变为1false变为零。

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

你也可以做一些类似的事情

while (1)
   //Infinite loop

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