【问题标题】:calling a boolean method inside the condition block of if statement?在 if 语句的条件块中调用布尔方法?
【发布时间】:2013-03-20 03:19:00
【问题描述】:

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

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

非常感谢。

【问题讨论】:

  • 您似乎忘记了[python] 标签(还有[c#] 以防万一)。
  • 是什么语言?
  • 好像是C++(“模板类”)
  • 这有点难以理解,但您只是在问if 语句中的条件表达式是否被执行?怎么可能没有?
  • 无论使用哪种语言,任何容器的大小都应该是属于该容器的可查询属性。不得不刻意维护它听起来不是一个好的设计。

标签: c++ if-statement boolean


【解决方案1】:

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

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

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

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

这是写在每本书=)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2018-01-17
    • 2015-05-25
    • 1970-01-01
    • 2013-03-26
    • 2016-11-20
    • 2020-07-30
    相关资源
    最近更新 更多