C++のクラスをpublic
、private
、またはprotected
と宣言するにはどうすればよいですか?
C++では、JavaまたはC#にあるようなアクセス指定子を持つクラス全体の概念はありません。コードの一部がクラスの可視性を持っている場合、それはクラスを参照できるからといって、たとえば、コンストラクターがprivateとマークされている可能性があるため、クラスをインスタンス化できるわけではありません。別のクラスのprivateセクションまたはprotectedセクションで宣言されたネストされたクラスは、そのクラスとその友人からは外部からアクセスできません。
あるクラスを別のクラスにネストすることにより:
class A
{
public:
class B {};
protected:
class C {};
private:
class D {};
};
メンバーと継承のどちらを意味するかによって異なります。 '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
インターフェイスをクライアントに公開しないだけで、「プライベートクラス」を実装できます。
「保護されたクラス」を作成する方法はありません。