Sujet dédié à la traduction et la relecture du chapitre 5.2
Sujet dédié à la traduction et la relecture du chapitre 5.2
Fini ! on met ça où ?
Le C++ introduit trois nouveaux mots-clefs pour fixer les frontières/droits/limites (?) d'une structure : public, private et protected. Leur sens et leur usage sont remarquablement clairs. Ces spécificateurs d'accès sont utilisés seulement dans la déclaration d'une structure, et ils changent les frontières/droits/limites pour toutes les déclarations qui viennent après eux. Quand vous utilisez un tel spécificateur, il doit être suivi par deux points. public signifie que tous les membres qui suivent cette déclaration sont disponibles à tout le monde. Les membres public sont comme les membre struct. Par exemple, les déclaration de structures suivantes sont équivalentes :
//: C05ublic.cpp
// Public est exactement comme struct en C
struct A {
int i;
char j;
float f;
void func();
};
void A::func() {}
struct B {
public:
int i;
char j;
float f;
void func();
};
void B::func() {}
int main() {
A a; B b;
a.i = b.i = 1;
a.j = b.j = 'c';
a.f = b.f = 3.14159;
a.func();
b.func();
} ///:~
A l'inverse, le mot clef private signifie que personne ne peut accéder à ce membre sauf vous, le créateur de ce type, dans les fonctions membres de ce type. private est un lien entre vous et le programmeur client ; si quelqu'un essaye d'accéder à un membre private, il obtient une erreur de compilation (compile-time error). Dans la structure B dans l'exemple ci-dessus, vous pouvez avoir envie de rendre certaines portions de la représentation (c'est-à-dire, les données membres) cachée, accessibles uniquement par vous :
//: C05rivate.cpp
// Fixer les frontières
struct B {
private:
char j;
float f;
public:
int i;
void func();
};
void B::func() {
i = 0;
j = '0';
f = 0.0;
};
int main() {
B b;
b.i = 1; // OK, public
//! b.j = '1'; // Illégal, private
//! b.f = 1.0; // Illégal, private
} ///:~
Bien que func() puisse accéder à n'importe quel membre de B (car func() est un membre de B, lui garantissant ainsi automatiquement la permission), une fonction ordinaire globale comme main() ne le peut pas. Bien sûr, les fonctions membres d'autres structures ne le peuvent pas non plus. Seules, les fonctions qui sont clairement déclarées dans la déclaration de la structure (le "contrat") peuvent avoir accès aux membres privés.
Il n'y a pas d'ordre requis pour les spécificateurs d'accès, et ils peuvent apparaître plus d'une fois. Ils affectent tous les membres déclarés après eux et avant le spécificateur suivant.
protected
Le dernier spécificateur d'accès est protected. protected agit comme private, avec une exception dont nous ne pouvons parler maintenant : les structures "hérités" (qui ne peuvent accéder aux membres private) peuvent accéder aux membres protected. Cela deviendra plus clair au chapitre 14 quand le concept d'héritage sera introduit. Pour le moment, considérez protected comme équivalent à private.
Voici la version qui va bien...
Salut,
Quelques corrections rapides, sans fichier joint:
§2
Hehe... typiquement des erreurs d'attentionpublic signifie que tous les membres qui suivent cette déclaration sont disponibles à tout le monde. Les membres public sont comme les membresajouté d'un struct. Par exemple, les déclarationsajouté de structures suivantes sont équivalentes :
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager