Comment les classes en C++ peuvent-elles être déclarées public
, private
ou protected
?
En C++, il n'y a aucune notion d'une classe entière ayant un spécificateur d'accès comme il en existe en Java ou C #. Si un morceau de code a la visibilité d'une classe, il peut référencer le nom de cette classe et la manipuler. Cela dit, il y a quelques restrictions à cela. Ce n'est pas parce que vous pouvez référencer une classe que vous pouvez l'instancier, car le constructeur peut être marqué comme privé. De même, si la classe est une classe imbriquée déclarée dans la section privée ou protégée d'une autre classe, alors la classe ne sera pas accessible en dehors de cette classe et de ses amis.
En imbriquant une classe dans une autre:
class A
{
public:
class B {};
protected:
class C {};
private:
class D {};
};
Cela dépend si vous parlez de membres ou d'héritage. Vous ne pouvez pas avoir un 'private class'
, En tant que tel.
class Foo
{
public:
Foo() {} //public ctr
protected:
void Baz() //protected function
private:
void Bar() {} //private function
}
Ou héritage:
class Foo : public Bar
class Foo : protected Bar
class Foo : private Bar
Vous pouvez implémenter des "classes privées" en ne publiant simplement pas leur interface aux clients.
Je ne connais aucun moyen de créer des "classes protégées".