2011-01-31 9 views
29

C++のクラスはどのようにして宣言できますかpublic,、またはprotectedC++クラス(public、private、protected)

+1

のように、誰かがクラスを使用できないようにしたいですか?クラスはサブクラス化することができます。つまり、クラスA {プライベート:クラスB {}; }; –

+0

これはあなたにとって役に立ちます:http://www.linuxquestions.org/questions/programming-9/public-private-protected-c-215399/#post1098220 – KyleWpppd

+0

なぜこの質問に近い投票がありますか?これは完全に合理的な質問のようです。 – templatetypedef

答えて

36

++のアクセス指定子に存在している方法を持つクラス全体の概念がありませんJavaやC#で。コードの一部にクラスの可視性がある場合、そのクラスの名前を参照して操作することができます。つまり、これにはいくつかの制限があります。クラスを参照できるからといって、インスタンス化できるわけではありません。たとえば、コンストラクタがprivateとマークされている可能性があるからです。同様に、クラスが別のクラスのプライベートセクションまたはプロテクトセクションで宣言されたネストされたクラスである場合、クラスはそのクラスおよびその外部からアクセスできなくなります。

5

メンバーまたは継承を意味するかどうかによって異なります。あなたは'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 
22

別の内側に1つのクラスをネストすることによって:

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

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

"保護されたクラス"を作成する方法はわかりません。

関連する問題