如下面iit
对象初始化的示例所示,返回的对象是指针,谁能解释从构造函数返回的指针如何?
int main()
{
std::istream_iterator<int> iit (std::cin);
std::cout << *iit;
return 0;
}
答案 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 ++中的基本组成部分。