Se connecter avec
S'enregistrer | Connectez-vous
Votre question

c++ : le mot const

Tags :
  • C / C++ / Java
  • string
  • Programmation
Dernière réponse : dans Programmation
Partagez
19 Janvier 2008 11:14:31

Bonjour,

Apres le C, je me remet tout doucement au C++.
Mais il y a une notion que j'ai du mal à aborder. C'est l'utilisation du mot const.

Par exemple, ici :

  1. main.cpp
  2.  
  3. int main(void)
  4. {
  5.  
  6. String s1("azerty"), s2('q');
  7.  
  8. String s3=s1+s2;
  9. }



  1. cstring.h
  2.  
  3. class String
  4. {
  5. char * chaine;
  6. int longueur;
  7. public :
  8. String(char *);
  9. String(char );
  10. String(const String & ); // contructeur par recopie
  11. ~String();
  12. char * getString();
  13. String operator+(String );
  14. String operator+(char );
  15. String & operator=(String );
  16.  
  17.  
  18. };



  1. cstring.cpp
  2.  
  3. String::String(const String & copieChaine)
  4. {
  5. longueur = copieChaine.longueur;
  6. chaine = new char[longueur];
  7. int i;
  8. for(i=0;i<=longueur;i++)
  9. {
  10. chaine[i] = copieChaine.chaine[i];
  11. }
  12. }


Si,je ne met pas le mot const pour le constructeur par recopie : cela ne marche pas
  1. main.cpp:16: error: no matching function for call to `String::String(String)'
  2. Cstring.h:10: error: candidates are: String::String(String&)
  3. Cstring.h:9: error: String::String(char)
  4. Cstring.h:8: error: String::String(char*)


J'ai un peu de mal à comprendre l'erreur.
Merci pour votre aide :) 

Autres pages sur : mot const

19 Janvier 2008 13:09:28

le mot clé const s'applique a ce qui se trouve juste avant (ou a défaut, ce qui se trouve après)

ici, cela veux juste dire que tu recois une référence constante vers un object String


et sinon qu'est-ce que tu as contre std::string ?
19 Janvier 2008 17:03:32

KangOl a dit :
le mot clé const s'applique a ce qui se trouve juste avant (ou a défaut, ce qui se trouve après)

ici, cela veux juste dire que tu recois une référence constante vers un object String




oui, si j'ai bien compris ca veut dire alors qu'on empeche de modifier dans la fonction l'adresse vers laquelle pointe la reference.

Mais ce qui m'embete, c'est comment je peux savoir que je devais mettre ce mot clé?

KangOl a dit :

et sinon qu'est-ce que tu as contre std::string ?


Non, c'est juste des exercices pour m'entrainer ;) 
Mais c'est bon à savoir qu'il existe une classe pour faire ça ;) 
Contenus similaires
19 Janvier 2008 18:04:46

bha faut toujours essayer de passer par des const ref quand la methode ne modifie pas l'objet qu'on lui passe
21 Janvier 2008 16:42:40

KangOl a dit :
bha faut toujours essayer de passer par des const ref quand la methode ne modifie pas l'objet qu'on lui passe


Merci pour tes conseils :)