C ++编程,Iterator是一个指针,即使它没有声明指针

时间:2014-04-08 13:01:51

标签: c++ class pointers

考虑以下几行

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';

1 个答案:

答案 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();
}