wake-up-neo.com

C ++ - Klassen (öffentlich, privat und geschützt)

Wie können Klassen in C++ als public, private oder protected deklariert werden?

38
Simplicity

In C++ gibt es keine Vorstellung davon, dass eine ganze Klasse über einen Zugriffsspezifizierer verfügt, wie dies in Java oder C # der Fall ist. Wenn ein Codeteil die Sichtbarkeit einer Klasse aufweist, kann er auf den Namen von verweisen Wenn Sie auf eine Klasse verweisen können, bedeutet dies nicht, dass Sie sie instanziieren können, da der Konstruktor möglicherweise als privat markiert ist Wenn eine verschachtelte Klasse im privaten oder geschützten Bereich einer anderen Klasse deklariert ist, ist die Klasse außerhalb dieser Klasse und ihrer Freunde nicht zugänglich.

42
templatetypedef

Indem Sie eine Klasse in eine andere schachteln:

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

Es kommt darauf an, ob Sie Mitglieder oder Vererbung meinen. Sie können keinen 'private class' Als solchen haben.

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

Oder Vererbung:

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

Sie können "private Klassen" implementieren, indem Sie ihre Schnittstelle einfach nicht für Clients veröffentlichen.

Ich kenne keine Möglichkeit, "geschützte Klassen" zu erstellen.

4
Edward Strange