【问题标题】:could someone explain that C++ code for me? [duplicate]有人可以为我解释一下 C++ 代码吗? [复制]
【发布时间】:2020-06-03 05:07:20
【问题描述】:

下面代码中冒号是什么意思?回调函数是从哪里来的?

using void_callback_f = void (*)();
std::vector<void_callback_f> _reload_callbacks;

void Reload() {
    for (const auto& callback : _reload_callbacks) {
        callback();
    }
}

【问题讨论】:

标签: c++ for-loop for-range


【解决方案1】:

for 循环中的冒号是 Range-based for loop

的示例

range_expression 被评估以确定序列或范围 迭代。序列的每个元素依次被取消引用并且 分配给具有给定类型和名称的变量 range_declaration。

请查看here了解更多信息

【讨论】:

  • 代码中没有声明的回调函数呢?谢谢你的回答。
  • 雷米勒博:谢谢你的回答。
  • @MuhammadRabieh 是的,它是由循环中的const auto&amp; callback 声明的。你甚至读过保罗给你的链接吗?它解释了循环的语法是如何工作的。 auto 只是意味着callback 的类型是由编译器根据循环通过的容器类型推断出来的。由于std::vector&lt;void_callback_f&gt; 被循环,callback 的类型被推断为void_callback_f。在每次循环迭代中,向量的下一个元素被分配给callback
  • Remy Lebeau:非常感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 2017-10-03
  • 2023-04-02
  • 2019-02-01
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
相关资源
最近更新 更多