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

时间:2013-03-29 12:11:07

标签: c++ if-statement boolean

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

我在这个列表类中定义了擦除功能,如果擦除成功则返回true,如果擦除失败则返回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();
    }
}

非常感谢。

1 个答案:

答案 0 :(得分:1)

是的,你可以。它总会被调用。它相当于:

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

你甚至可以在if:

中声明变量
if(int res = int_foo())
{
  do_smth(res);
}
else // res == 0
{
  do_smth_else();
}

这写在每本书中=)

相关问题