【发布时间】:2012-05-27 12:20:08
【问题描述】:
我了解正常的运算符重载。编译器可以直接将它们转换为方法调用。我对 -> 运算符不是很清楚。我正在编写我的第一个自定义迭代器,我觉得需要 -> 运算符。我看了一下stl源代码并实现了自己的喜欢它:
MyClass* MyClassIterator::operator->() const
{
//m_iterator is a map<int, MyClass>::iterator in my code.
return &(m_iterator->second);
}
然后我可以使用 MyClassIterator 的实例,例如:
myClassIterator->APublicMethodInMyClass().
看起来编译器在这里做了两个步骤。 1. 调用 ->() 方法获取一个临时的 MyClass* 变量。 2. 在临时变量上调用 APublicMethodInMyClass 使用它的 -> 操作符。
我的理解正确吗?
【问题讨论】: