在if语句的条件块中调用布尔方法

calling a boolean method inside the condition block of if statement?

本文关键字:调用 布尔 方法 条件 if 语句      更新时间:2023-10-16

我正在定义一个模板类的函数,该函数使用列表类。

我在这个list类中定义了erase函数,如果erase成功则返回true,如果erase失败则返回false,我在这里所要做的就是调用这个函数。

但是,我需要计算列表的大小n,并且只有当list.erase(itr.list_iter)调用返回true时,我才希望减少它。

更简洁地说,以下代码行是否只在成功时调用list.erase(itr.list_iter)函数并递减n并调用refresh() ?或者它实际上不擦除列表中的元素?

void erase(iterator itr) {
    if(list.erase(itr.list_iter)) {
        --n;
        refresh();
    }
}

可以。它将永远被调用。它相当于:

{
  bool res = foo();
  if(res)
  {
    do_stuff();
  }
}

你甚至可以在if里面声明变量:

if(int res = int_foo())
{
  do_smth(res);
}
else // res == 0
{
  do_smth_else();
}

这是写在每本书=)