小编典典

为什么要在 C++ 中使用嵌套类?

all

有人可以指点我一些很好的资源来理解和使用嵌套类吗?我有一些材料,如编程原则和类似 IBM Knowledge Center - Nested
Classes
之类的东西

但我仍然无法理解他们的目的。有人可以帮我吗?


阅读 120

收藏
2022-06-13

共1个答案

小编典典

嵌套类非常适合隐藏实现细节。

列表:

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

2022-06-13