【问题标题】:Dereferencing a reference取消引用引用
【发布时间】: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


【解决方案1】:

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

// assume that C is a container of pointers

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

op 必须期待一个对象或对对象的引用,而不是指向对象的指针。

【讨论】:

  • 嗯,这就解释了。顺便说一句,代码直接来自书中,不是我的。我想我的评论超出了我的想象。
猜你喜欢
  • 2014-10-12
  • 2012-03-23
  • 2019-10-29
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 2017-05-02
  • 2014-05-08
相关资源
最近更新 更多