考虑以下几行
std::map<char,int> mymap;
std::map<char,int>::iterator it; /* not std::map<char,int>::iterator *it; */
在第二行甚至认为它没有被声明为指针如何使用箭头操作符( - &gt;)来访问元素,如下文
std::cout << it->first << " => " << it->second << '\n';
答案 0 :(得分:4)
您可以为您的班级重载->
运算符,这正是这里发生的事情。
另一个例子:
class Hello
{
public:
void Show()
{
printf("Hello, world!");
}
};
class MyClass
{
private:
Hello hello;
public:
Hello * operator -> ()
{
return &hello;
}
};
int main(int argc, char * argv[])
{
MyClass m;
m->Show();
}