取消引用 我正在阅读《C++程序设计语言(第四版)》,我遇到了: 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 } 模板 void for_all(C&C,Oper op)//假设C是指针的容器 { 用于(自动和x:c) op(*x);//向op()传递指向的每个元素的引用 }

取消引用 我正在阅读《C++程序设计语言(第四版)》,我遇到了: 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 } 模板 void for_all(C&C,Oper op)//假设C是指针的容器 { 用于(自动和x:c) op(*x);//向op()传递指向的每个元素的引用 },c++,pointers,reference,dereference,C++,Pointers,Reference,Dereference,据我所知,我们正在迭代c,并获得对x的引用,这是当前的迭代x然后被传递给op的函数调用操作符,但它首先被解除引用?为什么x会被取消引用?您在发布的代码中的评论中说: 这意味着x是指针的引用*x计算为指针指向的对象 op必须使用对象或对对象的引用,而不是指向对象的指针。请参阅注释,其中说明C是指针的容器。显然op()不需要指针,它需要指针指向的值。所以你必须间接的,这就解释了。顺便说一下,代码是直接从书中,不是我的。我想这句话我听不懂。 // assume that C is a containe

据我所知,我们正在迭代
c
,并获得对
x
的引用,这是当前的迭代
x
然后被传递给
op
的函数调用操作符,但它首先被解除引用?为什么
x
会被取消引用?

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

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


op
必须使用对象或对对象的引用,而不是指向对象的指针。

请参阅注释,其中说明
C
是指针的容器。显然
op()
不需要指针,它需要指针指向的值。所以你必须间接的,这就解释了。顺便说一下,代码是直接从书中,不是我的。我想这句话我听不懂。
// assume that C is a container of pointers