Membres de classe

Membres de classe - C++ - Programmation

Marsh Posté le 17-07-2002 à 09:28:47    

Je voulais savoir si les membre de classe privée c'était stadard ou seulement reconus par queques compilateur.
 
 
Ps: Ou les deux :D


Message édité par LetoII le 17-07-2002 à 11:55:04

---------------
Le Tyran
Reply

Marsh Posté le 17-07-2002 à 09:28:47   

Reply

Marsh Posté le 17-07-2002 à 09:30:32    

tu parles des membres définis comme suit ?

Code :
  1. class maclasse {
  2. private:
  3.    bool var1;
  4.    int var2;
  5. }


 
si c'est ça, c'est effectivement du C++ standard, reconnu par tous les compilateurs


Message édité par Harkonnen le 17-07-2002 à 09:30:46

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-07-2002 à 09:38:10    

Harkonnen a écrit a écrit :

tu parles des membres définis comme suit ?

Code :
  1. class maclasse {
  2. private:
  3.    bool var1;
  4.    int var2;
  5. }


 
si c'est ça, c'est effectivement du C++ standard, reconnu par tous les compilateurs




Meu non, je parle de ça:

Code :
  1. class truc
  2. {
  3.    private:
  4.             static int Nombre;
  5. };


Message édité par LetoII le 17-07-2002 à 09:38:19

---------------
Le Tyran
Reply

Marsh Posté le 17-07-2002 à 09:40:50    

letoII a écrit a écrit :

 
Meu non, je parle de ça:

Code :
  1. class truc
  2. {
  3.    private:
  4.             static int Nombre;
  5. };






 :heink:  
elle est ou la différence avec ce que je t'ai marqué, hormis la présence de static ?
static te permet de conserver la valeur de ta variable à travers toutes les instances de ta classe, c'est aussi du C++ standard...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-07-2002 à 09:45:00    

Y a une énorme différence conceptuelle, et une grosse différence d'implémentation.
Jusqu'à présent j'étais persuadé que les membre de classe(statique) était forcément publique, jusqu'à ce que je tante dans mettre un privé et que je vois que ça marchait effectivement.


---------------
Le Tyran
Reply

Marsh Posté le 17-07-2002 à 09:49:49    

Oui, je parle pas de la différence conceptuelle, mais simplement je ne pense pas que le fait qu'une variable soit static l'oblige obligatoirement à être public.
 
Il s'agit juste d'autoriser ou d'interdire cette variable aux objets qui instancieront cette classe, donc à mon avis, static ou pas, c'est exactement la même chose, sauf que si tu la met en private, elle sera invisible lors de l'instanciation, sauf si tu écris des méthodes Get/Set


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-07-2002 à 09:54:16    

Harkonnen a écrit a écrit :

Oui, je parle pas de la différence conceptuelle, mais simplement je ne pense pas que le fait qu'une variable soit static l'oblige obligatoirement à être public.
 
Il s'agit juste d'autoriser ou d'interdire cette variable aux objets qui instancieront cette classe, donc à mon avis, static ou pas, c'est exactement la même chose, sauf que si tu la met en private, elle sera invisible lors de l'instanciation, sauf si tu écris des méthodes Get/Set




 
Qu'est ce que tu entend par invisible à l'instanciation? :??:


---------------
Le Tyran
Reply

Marsh Posté le 17-07-2002 à 10:37:37    

letoII a écrit a écrit :

 
 
Qu'est ce que tu entend par invisible à l'instanciation? :??:  




 
Prend cette classe :

Code :
  1. class maclasse {
  2. private:
  3.    static int var1;
  4. public:
  5.    void maclasse(int val);
  6.    int getvar(void);
  7. };
  8. void maclasse:maclasse(int val)
  9. {
  10.    var1 = val;
  11. }
  12. int maclasse::getvar(void)
  13. {
  14.    return var1;
  15. }
  16. int main(void)
  17. {
  18.    maclasse cl(5);
  19.    cout << cl.var1; //erreur
  20.    cout << cl.getvar(); // OK
  21.    return 0;
  22. }


 
la variable var1 est inaccessible à l'objet cl, tu es d'accord avec moi ? qu'elle soit static ou pas n'y change rien
je me suis mal exprimé, au lieu de dire invisible, j'aurais du dire inaccessble


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-07-2002 à 10:41:48    

Normal, c juste que j'avais pas bien compris ce que tu voulais dire :D (par contre les méthode d'instance pour accéder à un membre de classe c pas top, mais on dire que ct par ce que ct un exemple ;) )


---------------
Le Tyran
Reply

Marsh Posté le 17-07-2002 à 10:47:30    

letoII a écrit a écrit :

 
Jusqu'à présent j'étais persuadé que les membre de classe(statique) était forcément publique,




ah bon? mais ou as-tu ete pecher cette idée?
 
LeGreg

Reply

Marsh Posté le 17-07-2002 à 10:47:30   

Reply

Marsh Posté le 17-07-2002 à 10:53:46    

legreg a écrit a écrit :

 
ah bon? mais ou as-tu ete pecher cette idée?
 
LeGreg




 
Je sais plus trop, j'ai du écouter une conversation d'une oreil distraite   :ange:  
 
Enfin, bon le mal est réparé maintenant.


Message édité par LetoII le 17-07-2002 à 10:53:57

---------------
Le Tyran
Reply

Marsh Posté le 18-07-2002 à 01:31:40    

Tu mets ce que tu veux en private.
Membres de données, méthodes, typedefs, données statiques, enumérations, déclarations, héritage...
 
Si ça t'amuses, tu peux mettre le constructeur/destructeur , le constructeur de recopie ou l'opérateur d'affectation private.
Ça interdit à l'utilisateur d'instancier ou de copier ta classe.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 18-07-2002 à 08:14:31    

musaran a écrit a écrit :

Si ça t'amuses, tu peux mettre le constructeur/destructeur , le constructeur de recopie ou l'opérateur d'affectation private.
Ça interdit à l'utilisateur d'instancier ou de copier ta classe.




 
Et comment tu crois que j'ai fait ma classe de singleton template


Message édité par LetoII le 18-07-2002 à 08:14:39

---------------
Le Tyran
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed