【发布时间】:2016-11-18 04:33:21
【问题描述】:
我正在阅读“C++ 编程语言(第 4 版)”,我遇到了这个问题:
template<class C, class Oper>
void for_all(C& c, Oper op) // assume that C is a container of pointers
{
for (auto& x : c)
op(*x); // pass op() a reference to each element pointed to
}
据我了解,我们正在遍历c 并获得对x 的引用,这是当前的迭代。 x 然后被传递给op 的函数调用操作符,但是先解引用?为什么要取消引用x?
【问题讨论】:
-
查看注释,其中提到
C是一个指针容器。显然op()不想要指针,它想要指针指向的值。所以你必须间接。 -
在阅读了相同的代码摘录后,我逐字搜索了“取消引用”!很高兴看到我不是唯一犯此错误的人。
标签: c++ pointers reference dereference