为什么std :: istream_iterator构造函数返回指针

时间:2018-09-24 12:10:10

标签: c++ pointers iterator

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

int main() 
{

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

}

2 个答案:

答案 0 :(得分:7)

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

std::istream_iterator<int>只是overloads unary operator*

答案 1 :(得分:3)

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

const T& operator*() const;

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

您可以read here讨论各种 iterators ,并了解它的整个概念以及它在C ++中的基本组成部分。