有人可以为我解释一下 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& callback
声明的。你甚至读过保罗给你的链接吗?它解释了循环的语法是如何工作的。 auto
只是意味着callback
的类型是由编译器根据循环通过的容器类型推断出来的。由于std::vector<void_callback_f>
被循环,callback
的类型被推断为void_callback_f
。在每次循环迭代中,向量的下一个元素被分配给callback
Remy Lebeau:非常感谢您的澄清。以上是关于有人可以为我解释一下 C++ 代码吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章