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

发布于 2022-07-28 23:04:56

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

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

关注者
0
被浏览
18
1 个回答
  • 面试哥
    面试哥 2022-07-28
    为面试而生,有面试问题,就找面试哥。

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

    列表:

    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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看