C++ 为什么std::istream\u迭代器构造函数返回指针

C++ 为什么std::istream\u迭代器构造函数返回指针,c++,pointers,iterator,C++,Pointers,Iterator,正如下面的例子所示,对象初始化作为指针返回,有人能解释一下如何从构造函数返回指针吗 int main() { std::istream_iterator<int> iit (std::cin); std::cout << *iit; return 0; } intmain() { std::istream_迭代器iit(std::cin); Std::CUT< P>这里没有指针。在代码中看到 *IIT 并不意味着 IIT < /C>是一个指针-C++允许任

正如下面的例子所示,对象初始化作为指针返回,有人能解释一下如何从构造函数返回指针吗

int main() 
{

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

}
intmain()
{
std::istream_迭代器iit(std::cin);

Std::CUT< P>这里没有指针。在代码中看到<代码> *IIT <代码>并不意味着<代码> IIT < /C>是一个指针-C++允许任意操作符。


<> >代码> STD::ISTRAMAMIATORATION/<代码> .< /P> < P>这里没有指针。在代码中看到<代码> *IIT <代码>并不意味着<代码> IIT < /C>是指针-C++允许任意操作符。


std::istream\u迭代器
简单。

iit
不是指针,您的
*iit
是对
int
的引用请参见,这是以下声明:

模板类
std::istream_迭代器
重载一元
*
运算符
,其中它“返回对当前元素的[…]引用”


您可以了解不同类型的迭代器,并理解它在C++中的全部概念和基本部分。<> >强> <代码> IIT <代码>不是指针,而您的<代码> *IIT <代码>是对<代码> int <代码>的引用。<强> >,这是:

的声明 模板类
std::istream_迭代器
重载一元
*
运算符
,其中它“返回对当前元素的[…]引用”


你可以了解不同类型的迭代器,并理解它的全部概念和C++中的基本部分。

你似乎误解了一般的迭代器是如何工作的。我建议你读。<代码> IIT < /C>是迭代器(应该是什么样子的指针)。请阅读您的迭代器手册。您的可能副本似乎误解了迭代器在一般情况下的工作方式。我建议您阅读。
iit
是迭代器(应该像指针一样工作的东西)。请阅读您的迭代器手册。@Kad在上次编辑之前可能重复,这是错误引用,因此具有误导性。现已修复。道歉。@Kad在上次编辑之前,这是错误引用,因此具有误导性。现已修复。道歉。
const T& operator*() const;