Classes C++ (públicas, privadas e protegidas)

Como podem ser declaradas as classes em C++ public, private, ou protected?

Author: EnggForum, 2011-01-31

4 answers

Em C++ não há noção de que uma classe inteira tenha um especificador de acesso como existe em Java ou C#. Se um pedaço de código tem visibilidade de uma classe, ele pode referenciar o nome dessa classe e manipulá-lo. Dito isto, há algumas restrições a este respeito. Só porque você pode referenciar uma classe não significa que você pode instanciá-la, por exemplo, uma vez que o construtor pode ser marcado privado. Da mesma forma, se a classe for uma classe aninhada declarada no privado de outra classe ou secção protegida, então a classe não estará acessível fora dessa classe e dos seus amigos.

 39
Author: templatetypedef, 2011-01-31 20:02:44
Nidificando uma classe dentro da outra.
class A
{
public:
    class B {};
protected:
    class C {};
private:
    class D {};
};
 23
Author: Benjamin Lindley, 2011-01-31 20:02:43

Depende se te referes a membros ou herança. Não podes ter um 'private class', como tal.

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

Ou herança:

class Foo : public Bar
class Foo : protected Bar
class Foo : private Bar
 6
Author: The Communist Duck, 2011-01-31 20:00:55

Você pode implementar "classes privadas" simplesmente não publicando sua interface para os clientes.

Não sei como criar "classes protegidas".
 3
Author: Crazy Eddie, 2011-01-31 20:04:30