Faire des classes publiques à d'autres classes en C++
Si j'ai deux classes par exemple comme suit:
class A {...}
class B {...}
Si je veux faire de la classe A
public à la classe B
, dois-je simplement faire les membres de la classe A
public ou je peux utiliser public class A {...}
?
Est-il un moyen de dire à la classe B
par exemple que seule la classe A
public est-il pour vous? En d'autres termes, puis-je faire des cours publics à A
protégé ou privé, à d'autres? Ou, c'est juste une question de dérivation d'une classe (héritage)?
Grâce.
vous devez saisir une bonne C++ livre. Il y a beaucoup de discussions qui vous conseillera.
OriginalL'auteur Simplicity | 2011-01-25
Vous devez vous connecter pour publier un commentaire.
Il y a une différence substantielle entre la prise de la classe public et rendre son contenu public.
Si vous définir votre classe dans un fichier include (.h fichier) alors, vous faites de votre classe publique. Tous les autres fichier source qui inclut ce fichier include sera au courant de cette classe, et peut par exemple avoir un pointeur.
La seule façon de faire une classe privée, elle à mis sa définition dans une source (.rpc) fichier.
Même si vous faites une classe publique, vous n'avez pas nécessairement à rendre le contenu de votre classe publique. L'exemple suivant est extrême:
Si cette définition est de mettre dans un fichier à inclure, dans toute autre source peut se référer à (avoir un pointeur sur) cette classe, mais toutes les méthodes de la classe sont privées, aucune autre source ne peut construire, détruire, de définir sa valeur ou sa valeur.
Vous rendre le contenu d'une catégorie du public en mettant les méthodes de lui dans le "public" de la partie de la définition de la classe, comme ceci:
Maintenant tout le monde peut construire et détruire les instances de cette classe, et peut même avoir de la valeur. Réglage de la valeur, cependant, n'est pas public, donc personne n'est en mesure de définir la valeur (à l'exception de la classe elle-même).
Si vous voulez faire de la classe public qu'à certaines autres classes de votre application, mais pas à la totalité de l'application, vous devez déclarer que les autres de la classe à un ami, par exemple:
Maintenant, SomeOtherClass peuvent accéder à toutes les méthodes privées de MyClass, de sorte qu'il peut appeler setValue pour définir la valeur de MyClass. Toutes les autres classes sont encore limitées aux méthodes publiques.
Malheureusement, il n'existe aucun moyen en C++ de faire seulement une partie de votre publique de la classe à un ensemble limité d'autres classes. Donc, si vous faites une autre classe d'un ami, il est en mesure d'accéder à toutes les méthodes privées. Par conséquent, de limiter le nombre d'amis.
int getValue() const;
, neconst
ici: retourne la valeur d'une constante? Merci.Le const signifie que la méthode ne permet pas de modifier l'instance elle-même, de sorte getValue ne changera pas l'instance de Maclasse sur lequel vous appelez getValue. En général, un const valeur de retour (comme dans "const int getValue();") n'a aucun sens. Ce qui est logique c'est que si vous retourner un pointeur, que le pointeur pointe vers une const valeur (comme dans "const char *string getName()").
OriginalL'auteur Patrick
Vous pouvez utiliser de l'amitié.
non, c'est héritage.
Alors, comment pouvons-nous faire une classe publique? Est-il correct en utilisant le mot clé "public" avant le nom de la classe?
en C++ il n'y a pas de restrictions d'accessibilité pour les classes (comme dans, par exemple, Java ou C#), uniquement pour les membres de la classe. Donc
public class X { ... };
n'est pas valide en C++. Une classe est visible à une autre classe si vous#import
son fichier d'en-tête.Comme DeadMG vous l'a dit. Non, l'écriture publique avant le mot-clé class est pas du C++.
OriginalL'auteur Puppy
Si B a une forte interdépendance à Un, je vous suggère d'utiliser une classe imbriquée. Heureusement, la classe imbriquée peut être protégé ou privé.
OriginalL'auteur BatchyX