web-dev-qa-db-ja.com

C ++クラス(パブリック、プライベート、および保護)

C++のクラスをpublicprivate、またはprotectedと宣言するにはどうすればよいですか?

38
Simplicity

C++では、JavaまたはC#にあるようなアクセス指定子を持つクラス全体の概念はありません。コードの一部がクラスの可視性を持っている場合、それはクラスを参照できるからといって、たとえば、コンストラクターがprivateとマークされている可能性があるため、クラスをインスタンス化できるわけではありません。別のクラスのprivateセクションまたはprotectedセクションで宣言されたネストされたクラスは、そのクラスとその友人からは外部からアクセスできません。

42
templatetypedef

あるクラスを別のクラスにネストすることにより:

class A
{
public:
    class B {};
protected:
    class C {};
private:
    class D {};
};
29

メンバーと継承のどちらを意味するかによって異なります。 'private class'などを使用することはできません。

class Foo
{
public:
Foo() {} //public ctr
protected:
void Baz() //protected function
private:
void Bar() {} //private function
}

または継承:

class Foo : public Bar
class Foo : protected Bar
class Foo : private Bar
6

インターフェイスをクライアントに公開しないだけで、「プライベートクラス」を実装できます。

「保護されたクラス」を作成する方法はありません。

4
Edward Strange