有人可以为我解释一下 C++ 代码吗? [复制]

Posted

技术标签:

【中文标题】有人可以为我解释一下 C++ 代码吗? [复制]【英文标题】:could someone explain that C++ code for me? [duplicate] 【发布时间】: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();
    

【问题讨论】:

这个应该有用:***.com/questions/388242/… 如果你的意思是for循环中的冒号,它是一种不计算索引的foreach循环。这是用 c++、javascripts 等编写 for 循环的一种方法。 Ardahan Kisbet:谢谢您的回答。 Ardahan Kisbet:代码中没有声明的回调函数呢? 也重复:In for (int val :arr), what does the colon mean?、What does “ for (const auto &s : strs) ” mean?、What is “for (x : y)”? 【参考方案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:非常感谢您的澄清。

以上是关于有人可以为我解释一下 C++ 代码吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

有人可以为我非常简单地解释 MVC 吗? [复制]

有人可以解释一下这个 c++ 代码有啥问题并提供解决方案吗

有人可以为我解释一下这个 SQL 吗?

交叉和计算,有人可以解释一下代码吗?

有人可以解释一下啥是受保护的覆盖无效吗? [复制]

有人可以解释一下 C 中 signal() 语法的含义吗? [复制]