2011-01-31 25 views
29

¿Cómo se pueden declarar las clases en C++ public, private o protected?Clases de C++ (públicas, privadas y protegidas)

+1

Como en, ¿quieres que alguien no pueda usar una clase? Una clase puede ser subclasificada: es decir, clase A {privada: clase B {}; }; –

+0

Esto puede ser útil para usted: http://www.linuxquestions.org/questions/programming-9/public-private-protected-c-215399/#post1098220 – KyleWpppd

+0

¿Por qué hay un voto cercano para esta pregunta? Esto parece una pregunta perfectamente razonable para hacer. – templatetypedef

Respuesta

36

En C++ no hay noción de toda una clase que tiene un especificador de acceso el camino que hay en Java o C#. Si un fragmento de código tiene visibilidad de una clase, puede hacer referencia al nombre de esa clase y manipularlo. Dicho esto, hay algunas restricciones sobre esto. El hecho de que pueda hacer referencia a una clase no significa que pueda crear una instancia, por ejemplo, ya que el constructor puede estar marcado como privado. De forma similar, si la clase es una clase anidada declarada en la sección privada o protegida de otra clase, no se podrá acceder a la clase fuera de esa clase y sus amigos.

5

Depende si se refiere a miembros o herencia. No puede tener un 'private class', como tal.

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

o herencia:

class Foo : public Bar 
class Foo : protected Bar 
class Foo : private Bar 
22

Al anidar una clase dentro de otra:

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

Puede implementar "clases privadas" simplemente no publicando su interfaz a los clientes.

No conozco ninguna forma de crear "clases protegidas".

Cuestiones relacionadas