取消引用引用

Mem*_*ter 3 c++ pointers reference dereference

我正在阅读"The C++ Programming Language(第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
}
Run Code Online (Sandbox Code Playgroud)

所以从我的理解,我们正在迭代c并获得一个引用x,这是当前的迭代.x然后传递给函数调用运算符op,但它首先被解除引用?为什么会x被解除引用?

R S*_*ahu 6

你在发布的代码的评论中说:

// assume that C is a container of pointers
Run Code Online (Sandbox Code Playgroud)

这意味着x是对指针的引用.*x计算为指针指向的对象.

op 必须期望对象或对象的引用,而不是指向对象的指针.