Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1387 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Compréhension des const

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Compréhension des const

n°729537
dache33
Posté le 17-05-2004 à 21:13:24  profilanswer
 

Voilà je suis dans les const. Je suis le support de cours d'Antoine Mahul (http://frog.isima.fr/antoine/avance.shtml).
 
Ya un truc qui m'echappe. Si vous pouviez m'expliquer ce serait sympa..
Voilà son explication:
 

Code :
  1. const double pi = 3.14159; // Déclaration d'un double constant
  2. const double * ptr1 = 0;   // Pointeur (non constant) sur un
  3.                            // double constant initialisé au pointeur nul
  4. ptr1  = π               // OK
  5. *pi = 12;                  // Erreur (tentative de modification de  
  6.                            // l'objet pointé)
  7. const double e = 2.71828;  // Déclaration d'un autre double constant
  8. ptr1 = &e                  // OK (modification de la valeur du pointeur)


 
le

Code :
  1. *pi = 12

me pose problème, sachant que pi n'est pas un pointeur, je ne vois pas ce qu'il veut faire ?!
 
plus loin :  
 

Code :
  1. // Déclaration de deux double
  2. double x = 0.0, y = 0.0;
  3. // Déclaration d'un pointeur constant initialisé avec l'adresse de x
  4. Point *const ptr2 = &x; 
  5. *ptr2 = pi;    // OK  
  6. // (modification de l'objet pointé, x prend la valeur de pi           
  7. ptr2 = &y;     // Erreur  
  8. //(tentative de modification de la valeur du pointeur)


Je ne comprend pas pourquoi il veut mettre l'adresse d'un double dans un   pointeur de Point (Point étant une classe définie précedemment).
 
Merci de vos explications...

mood
Publicité
Posté le 17-05-2004 à 21:13:24  profilanswer
 

n°729540
Taz
bisounours-codeur
Posté le 17-05-2004 à 21:16:00  profilanswer
 

const -> constante
 
 
 *pi = 12;  
 
pi n'est pas un pointeur
 
ptr2 = &y;
 
ptr2 est const, tu ne peux lui affecter une valeur qu'à l'initialisation

n°729547
dache33
Posté le 17-05-2004 à 21:20:42  profilanswer
 

Taz a écrit :

const -> constante
 
 
 *pi = 12;  
 
pi n'est pas un pointeur
 
ptr2 = &y;
 
ptr2 est const, tu ne peux lui affecter une valeur qu'à l'initialisation


 
Ok pour expliquer mieux il aurait dû mettre  
pi=12
ou *ptr1 = 12  
pour montrer que ça merde, car si pi n'est pas const, ca ne marche pas quand même...
pour la deuxième question, mon pb c'est qu'il veut mettre l'adresse d'un double dans un pointeur vers un autre type., j'avais compris pour ptr2=&y

n°729597
cris56
Posté le 17-05-2004 à 21:59:26  profilanswer
 

dans ce cour j'au vu qu'il utilisait systematiquement endl, pour "forcer" l'affichage meme si c'est pas necessaire, seulement j'ai lu que utiliser endl a outrance (et donc tj flusher le stream) peut poser de grave probleme de performance
 
d'ailleur bjarne stroupstrup ne l'utilise pratiquement pas dans c++ third edition

n°729602
dache33
Posté le 17-05-2004 à 22:09:46  profilanswer
 

noté, mais ça ne répond pas à ma question :/

n°729606
schnapsman​n
Zaford Beeblefect
Posté le 17-05-2004 à 22:20:45  profilanswer
 

dache33 a écrit :

noté, mais ça ne répond pas à ma question :/


 
en effet il y a erreur dans ce cours (de merde :o )
 
il fallait lire:
 

*ptr = 12


 
un peu d'imagination que diable! [:meganne]


Message édité par schnapsmann le 17-05-2004 à 22:21:09

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°729608
cris56
Posté le 17-05-2004 à 22:23:48  profilanswer
 

si tu ve un bon cour online, je te conseil celui la
 
http://casteyde.christian.free.fr/ [...] book1.html
 
d'ailleur j'aimerais bien avoir l'avi d'autre pesonne dessus

n°729610
dache33
Posté le 17-05-2004 à 22:25:47  profilanswer
 

schnapsmann a écrit :


un peu d'imagination que diable! [:meganne]


ok, j'avais donc bien compris...
 
Sinon, pour le second problème (types différents à l'affectation), il s'est planté comme une otarie bourrée à la bière aussi?

n°729613
dache33
Posté le 17-05-2004 à 22:28:03  profilanswer
 

Sinon pour le document en lui-même, à part les erreurs sus-citées et celles que je n'ai pas vues, je le trouve clair, concis. Parfait pour la veille d'un partiel ;)

n°729614
schnapsman​n
Zaford Beeblefect
Posté le 17-05-2004 à 22:28:51  profilanswer
 

dache33 a écrit :


Sinon, pour le second problème (types différents à l'affectation), il s'est planté comme une otarie bourrée à la bière aussi?


sans aucun doute possible  [:naughty]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
mood
Publicité
Posté le 17-05-2004 à 22:28:51  profilanswer
 

n°729615
cris56
Posté le 17-05-2004 à 22:29:25  profilanswer
 

ben ca depend ce qu'il cherche a faire,  mais ca semble sementiquement correcte, il affecte une adresse à un pointeur

n°729616
schnapsman​n
Zaford Beeblefect
Posté le 17-05-2004 à 22:30:35  profilanswer
 

cris56 a écrit :

ben ca depend ce qu'il cherche a faire,  mais ca semble sementiquement correcte, il affecte une adresse à un pointeur


c'est bon si

typedef double Point;


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°729617
cris56
Posté le 17-05-2004 à 22:32:44  profilanswer
 

a, ben aparament Point semble etre une agregation de 2 int ??

n°729618
dache33
Posté le 17-05-2004 à 22:33:33  profilanswer
 

non, c'est une classe Point definie en peu avant :  
class Point {
 
private:
 
  double x; // Absisse
  double y; // Ordonnee
 
public:
 
 etc...

n°729620
schnapsman​n
Zaford Beeblefect
Posté le 17-05-2004 à 22:34:42  profilanswer
 

bon bein c'est clair alors, ça ne compile même pas donc inutile de chercher midi à quatorze heures [:icon10]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°729622
cris56
Posté le 17-05-2004 à 22:36:08  profilanswer
 

oui mais il fait const Point origine(0, 0);
 
il faudrait alors faire const Point origine(0.0, 0.0);
sinon ya un cast, d'ailleur ca devrait balancer un waning ca

n°729624
cris56
Posté le 17-05-2004 à 22:37:07  profilanswer
 

si tu ve un cour meilleur, je repete
 
http://casteyde.christian.free.fr/ [...] book1.html  
 
ou achete un livre, c++ third edition est une reference

n°729625
schnapsman​n
Zaford Beeblefect
Posté le 17-05-2004 à 22:37:46  profilanswer
 

cris56 a écrit :

oui mais il fait const Point origine(0, 0);
 
il faudrait alors faire const Point origine(0.0, 0.0);
sinon ya un cast, d'ailleur ca devrait balancer un waning ca


 
Mais non arretes toi avec tes casts! :o  
 
Tu peux tjrs en fair un, ça va compiler, mais faire n'importe quoi à l'éxécution.  
 


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°729629
cris56
Posté le 17-05-2004 à 22:43:32  profilanswer
 

attend, si tu fait double n=0; ya un cast implicite, non?

n°729631
schnapsman​n
Zaford Beeblefect
Posté le 17-05-2004 à 22:45:11  profilanswer
 

cris56 a écrit :

attend, si tu fait double n=0; ya un cast implicite, non?


bon tu pars de trop loin, j'abandonne.
désolé, a+  [:tinostar]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Compréhension des const

 

Sujets relatifs
const et optimisation[Compréhension] opérateurs new et delete[]
[DEBUTANT]Problème avec const char[Programmation C] Modulo - pb de comprehension du prog
Problème de compréhension d' une requête SQL[analyse] question de compréhension sur un cour de MERISE 2
Typedef ->problème de compréhensionconst string & Class::Methode()
probleme de compréhension sur tri quick sort[JAVA] prob de compréhension pour L'instruction continue !!
Plus de sujets relatifs à : [C++] Compréhension des const


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR