private, return et "lecture seule"

private, return et "lecture seule" - C++ - Programmation

Marsh Posté le 07-08-2002 à 22:01:37    

si j'ai (j'ai pas mis le reste du code ;))
 
class Calculette
{
 public:
 
 vector<double> * Afficher_Pile () {return Pile ;}
 
 private :
 vector<double> * Pile;
}
 
 
est-ce que ca m'empeche de faire
 
Calculette * MaCalculette = new Calculette ();
 
MaCalculette->Afficher_Pile()->push_back(0.25) ;
 
 
?
 
(je souhaite que oui....)
 
juste hisoire d'etre sur....

Reply

Marsh Posté le 07-08-2002 à 22:01:37   

Reply

Marsh Posté le 07-08-2002 à 22:10:28    

non ça ne t'empêche pas de le faire


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-08-2002 à 22:19:12    

merde !
zut et zut!
 
spabieng

Reply

Marsh Posté le 07-08-2002 à 22:21:06    

Tu veux faire quoi avec ton "afficher_pile" ?
tu retourne un pointeur vers le vecteur donc à priori c'est que tu veux donner accès au vecteur...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-08-2002 à 22:24:40    

afficher ... mais pour le principe, j'aurais voulu que ce soit totalemetn impossible de modifier la pile sans passer par les méthodes propres de la classe
 

Reply

Marsh Posté le 07-08-2002 à 22:29:22    

farib a écrit a écrit :

afficher ... mais pour le principe, j'aurais voulu que ce soit totalemetn impossible de modifier la pile sans passer par les méthodes propres de la classe
 
 




 
tu renvoit un pointeur cont alors, de toute manière c totalement imposssible si tu renvois l'adresse de ton vecteur y a tjrs moyen de contourner, masi avec le cont ça limite (faut faire un const_cast pour pouvoir modifier la variable)


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

Marsh Posté le 08-08-2002 à 01:26:38    

utilisation de const:
un const ca ne se resout pas au runtime
mais au compilation time.  
 
Que definit un const: un objet sur qui on ne doit
appeler que des methodes const. Ces methodes const peuvent
tres bien modifier l'objet, le compilateur s'en fiche
c'est au programmeur de savoir ce qu'il fait et d'etre coherent avec l'utilité affichée de l'objet.
 
A l'impossible nul n'est tenu, un compilateur ne resout pas les problemes existentiels du programmeur, ni la presence d'une bonne documentation sur l'utilisation des objets.
 
Utilisation du private:
un private ne se resout pas au runtime
mais au compilation time.
 
L'interet du private ne reside pas a cacher une partie
de la memoire au reste de l'application (chose qui est impossible a faire en C/C++) ni a la rendre read only.
 
Le private permet juste d'encapsuler une partie des membres d'un objet pour y acceder de maniere clean par une interface publique. (afin de privilégier les bonnes habitudes de programmation, pour que l'utilisateur de la classe ne se repose pas trop sur l'implantation actuelle et soit pousse a utiliser les accesseurs pour acceder aux membres de la classe).
 
Les constructions du C++, ne t'autorisent pas a rendre ces choses "totalement impossibles", par contre l'utilisateur qui cherche a faire du code qui marche (et non pas qui marchotte, jusqu'a ce que tu changes l'implantation ou que tu recompiles tes librairies) sera fortement incité à faire confiance a tes interfaces et constructions pour utiliser tes classes et ton code (en supposant que tu saches ce que tu fais evidemment).
 
Evidemment sans interface publique tu es forcé de faire du reverse engineering, chose dont les hackers ne se privent pas.
 
A+
LeGreg

Reply

Marsh Posté le 08-08-2002 à 08:26:03    

C vrai que présenté comme ça c plus clair :D


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

Marsh Posté le 08-08-2002 à 11:25:05    

il faut bien lever quelques legendes
qui risqueraient de s'insidier dans l'esprit
du débutant :)
 
LeGreg
ps: quoi t'as quelque chose a redire sur mes explications :fou: ??

Reply

Marsh Posté le 08-08-2002 à 11:49:02    

legreg a écrit a écrit :

il faut bien lever quelques legendes
qui risqueraient de s'insidier dans l'esprit
du débutant :)
 
LeGreg
ps: quoi t'as quelque chose a redire sur mes explications :fou: ??




 
Non, elle sont bien, plus clair que les miennes (c pour ça que je ferai jamais prof :D)


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

Marsh Posté le 08-08-2002 à 11:49:02   

Reply

Marsh Posté le 09-08-2002 à 03:58:02    

Quand on poste la même chose à plusieurs endroits, c'est bien de mettre au moins un lien.
http://www.developpez.net/forums/v [...] p?p=115987


Message édité par Musaran le 09-08-2002 à 04:08:34

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

Marsh Posté le 09-08-2002 à 11:46:26    

c'est pas bien le cross-post :non:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

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