有人可以指点我一些很好的资源来理解和使用嵌套类吗?我有一些材料,如编程原则和类似 IBM Knowledge Center - Nested Classes 之类的东西
但我仍然无法理解他们的目的。有人可以帮我吗?
嵌套类非常适合隐藏实现细节。
列表:
class List { public: List(): head(nullptr), tail(nullptr) {} private: class Node { public: int data; Node* next; Node* prev; }; private: Node* head; Node* tail; };
在这里,我不想公开 Node,因为其他人可能会决定使用该类,这会妨碍我更新我的类,因为任何公开的内容都是公共 API 的一部分,必须 永远 维护。通过将类设为私有,我不仅隐藏了实现,我还说这是我的,我可以随时更改它,所以你不能使用它。
看看std::list或者std::map它们都包含隐藏类(或者是吗?)。关键是它们可能会也可能不会,但由于实现是私有的并且隐藏的,STL 的构建者能够在不影响您使用代码的方式的情况下更新代码,或者在 STL 周围留下很多旧包袱,因为他们需要为了与某些决定要使用隐藏在其中的 Node 类的傻瓜保持向后兼容性list。
std::list
std::map
list