我想了解以下代码:
class EdgeIterator {
EdgeIterator() {}
EdgeIterator(const EdgeList edges) {}
EdgeIterator begin() { return *this; }
EdgeIterator& operator*() { return *this; }
}
在
begin
函数中return *this
如何返回和EdgeIterator
并且,在operator*
函数中,它如何返回EdgeIterator&
。 最佳答案
begin()
按值返回,因此它返回*this
的副本。operator*()
通过引用返回,因此它返回对*this
的引用。
下面是类似的代码,可以提供更好的解释:
struct X
{
std::string a;
X copy() { return *this; }
X& ref() { return *this; }
};
int main()
{
X x{"Hi"};
x.copy().a = "Bye";
std::cout << x.a << '\n'; // prints Hi
x.ref().a = "Bye";
std::cout << x.a << '\n'; // prints Bye
}
[Live example]