当我在侯捷先生的《STL源码剖析》中看到类似的代码时,我内心产生个疑惑:迭代器的->操作 会不会重复调用了解引用操作即operator*。
先上代码:
class testFunc
{
public:
testFunc & operator*()
{
cout << "testFunc:" << __FUNCTION__ << endl;
return *this;
}
testFunc* operator->()
{
return &(*this);
}
};
this指针是对象指针,不是对象。所以使用*this之后才进入类或对象命名空间,也就是说this是个class指针,指向基本类型class。这样子就明白了,无论如何重载operator*()或者operator->(),都不会影响它的操作方式,因为它在class的命名空间中,在申请内存时初始化