Classes C++ (públicas, privadas e protegidas)
Como podem ser declaradas as classes em C++ public
, private
, ou protected
?
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.
class A
{
public:
class B {};
protected:
class C {};
private:
class D {};
};
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
Você pode implementar "classes privadas" simplesmente não publicando sua interface para os clientes.
Não sei como criar "classes protegidas".