1. ホーム
  2. c++

[解決済み】C++でネストされたクラスを使用するのはなぜですか?

2022-04-09 07:18:55

質問

ネストされたクラスを理解し使用するための素晴らしいリソースをどなたかご紹介いただけないでしょうか?プログラミング原理やこんな感じの資料があります。 IBM Knowledge Center - 入れ子クラス

しかし、まだその目的を理解するのに苦労しています。どなたか教えてください。

どのように解決するのですか?

ネストされたクラスは、実装の詳細を隠蔽するのに適しています。

リスト

class List
{
    public:
        List(): head(nullptr), tail(nullptr) {}
    private:
        class Node
        {
              public:
                  int   data;
                  Node* next;
                  Node* prev;
        };
    private:
        Node*     head;
        Node*     tail;
};

他の人がこのクラスを使うかもしれないし、公開されたものはパブリックAPIの一部であり、メンテナンスされなければならないので、私のクラスを更新する妨げになるからです。 いつまでも . クラスを非公開にすることで、実装を隠すだけでなく、これは私のものであり、いつでも変更できるので、あなたはそれを使用することはできません、と言っているようなものです。

見てください std::list または std::map これらはすべて隠されたクラスを含んでいます(そうでしょうか?) 要は、そうであってもなくてもいいのですが、実装がプライベートで隠されているため、STLのビルダーはコードの使い方に影響を与えることなくコードを更新することができました。 list .