我想了解以下代码:
class EdgeIterator {
EdgeIterator() {}
EdgeIterator(const EdgeList edges) {}
EdgeIterator begin() { return *this; }
EdgeIterator& operator*() { return *this; }
}
在begin
函数中return *this
如何返回和EdgeIterator
并在operator*
函数中返回EdgeIterator&
。
答案 0 :(得分:1)
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
}