为什么迭代器定义为结构而不是类?

ram*_*n1k 2 c++ iterator stl

关于STL迭代器实现,我有一些小问题.

  • 为什么迭代器定义为结构而不是类?
  • 主要原因是什么?

jua*_*nza 5

这是一个实现选择. class并且struct几乎相同C++,不同的是默认访问说明符和继承,它们对于class是私有的,对于struct是public.因此,如果一个类型几乎不需要私有数据成员,那么将它作为结构实现它可能更有意义.但是你可以使用完全相同的类型:

struct Iterator : IteratorBase {
  SomeType x;
};
Run Code Online (Sandbox Code Playgroud)

与...完全相同

class Iterator : public IteratorBase{
 public:
  SomeType x;
};
Run Code Online (Sandbox Code Playgroud)