我想理解下面的代码:
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
}
关于c++ - 间接运算符如何通过运算符重载返回指针地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56595583/