【问题标题】:Why std::istream_iterator constructor returning pointer [closed]为什么 std::istream_iterator 构造函数返回指针
【发布时间】:2019-02-27 22:52:20
【问题描述】:

如下例iit 对象初始化返回指针,谁能解释构造函数如何返回指针?

int main() 
{

 std::istream_iterator<int> iit (std::cin);
 std::cout  << *iit;
 return 0;

}

【问题讨论】:

标签: c++ pointers iterator


【解决方案1】:

这里没有指针。在代码中看到 *iit 并不意味着 iit 是一个指针 - C++ 允许在任意运算符上使用 operator overloading

std::istream_iterator&lt;int&gt; 就是overloads unary operator*

【讨论】:

    【解决方案2】:

    iit 不是指针,而您的*iit 是对int 的引用。看,这是std::istream_iterator::operator* 的声明:

    const T& operator*() const;
    

    模板类 std::istream_iterator 重载一元 * 运算符,其中 “返回一个 [... ] 引用当前元素".

    您可以read here 了解不同类型的迭代器,并了解它的整个概念以及它在 C++ 中的基本部分。

    【讨论】:

    • @Kad 在上次编辑之前,这是错误引用,因此具有误导性。现在修好了。道歉。
    猜你喜欢
    • 2017-03-13
    • 1970-01-01
    • 2016-06-28
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    相关资源
    最近更新 更多