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

Why std::istream_iterator constructor returning pointer

本文关键字:iterator 构造函数 返回 指针 istream std 为什么      更新时间:2023-10-16

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

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

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

std::istream_iterator<int>只是重载一元operator*.

iit

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

const T& operator*() const;

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

您可以在此处阅读有关不同类型的迭代器的信息,并了解它的整个概念以及它在C++中的基本部分。