Hériter des membres privés en C ++
supposons qu'une classe a données privées des membres de mais les setters et getters sont à portée publique. Si vous hériter de cette classe, vous pouvez toujours appeler les setters et getters -- en permettant l'accès aux données privées des membres de la classe de base. Comment est-ce possible puisqu'il est mentionné qu'une classe dérivée ne peut pas hériter des données privées des membres de la
source d'informationauteur shreyasva
Vous devez vous connecter pour publier un commentaire.
Une classe dérivée n'a pas hérité de accès aux données privées des membres. Toutefois, il ne hériter d'un parent complet de l'objet, qui contient l'un des membres privés dont cette classe déclare.
Il dépend de l'héritage de type. Si vous héritez en privé, puis la classe dérivée n'a PAS accès à la Base de membres privés.
Parce que les getters et les setters sont
public
-- ils sont rachetables par tous, et pas seulement les classes dérivées.vous pouvez accéder par l'accès à des setters et getters public et l'acces à ce
Getters et setters ne Pas vous donner un contrôle complet sur les données privées des membres. Le contrôle est toujours la classe de base.
À l'aide du modèle
semble orientée objet et a l'envoyé de l'encapsulation.
Cependant comme vous l'avez remarqué, vous pouvez toujours accéder directement au domaine privé et il n'y a rien de gagné plus juste de faire
a
public, et y accéder directement.À l'aide des getters et setters comme cela n'a pas vraiment de sens en C++.
Ils sont inclus, mais pas héréditaire. Ce que cela signifie, c'est:
: public SomeClass
: protected SomeClass
ou même: SomeClass
équivalent à: private SomeClass
) pas les rendre accessibles à partir de l'enfant méthodes de la classe, ou à l'extérieur (this->a
etsomeobject.a
respectivement);Donc, en gros,
protected
n'est pas visible à l'extérieur tandis que l'intérieur visible et de classes dérivées (si: private Parent
n'a pas été utilisé), tandis queprivate
n'est pas visible ni de classes dérivées, ni à l'extérieur de la classe parent; il n'est visible que pour les parents de la classe de méthodes, même si elles sont héritées (mais pas surdéfini).