Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

leneuf22

const ?

Messages recommandés

:P

 

J'ai une petite question en C (ou en C++, je ne sais pas :-( )

Pourquoi mettre un "const" après le prototype d'une fonction ?

 

exemple :

 

int groar(int gneuh, bool grouic) const;

Partager ce message


Lien à poster
Partager sur d’autres sites

*après* le prototype de la fonction ? J'ai des doutes...

Par contre, quand il est placé avant le proto, ca signifie que la visibilité de cette fonction ne dépasse pas le cadre du présent fichier (et ca peut causer des problèmes).

Partager ce message


Lien à poster
Partager sur d’autres sites

Que dit le K&R au sujet du mot-clef const ?

 

p.40 : toutes les déclarations de variables peuvent comporter le mot-clef const qui indique que leurs valeurs ne seront jamais modifiées. Dans le cas d'un tableau, const interdit de modifier ses éléments. (ex. const double pi=3.1415927;)

 

Rien de plus par la suite.

 

En C++, le mot-clef const utilisé pour définir une méthode définit une méthode de classe (c'est à dire qu'elle ne sera pas dupliquée dans chaque instance de ta classe, mais sera, en quelque sorte, "globale" (pour cette classe)...

 

J'ai beau chercher sur le Net, dans les cours de C et C++, pas la omindre trace de const utilisé *après* la déclaration... qui a écrit ce bout de code ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon, ben j'ai la réponse en ligne directe de MSDN :

 


Constant Member Functions

C++ Specific 



Declaring a member function with the const keyword specifies that the function is a "read-only" function that does not modify the object for which it is called.



To declare a constant member function, place the const keyword after the closing parenthesis of the argument list. The const keyword is required in both the declaration and the definition. A constant member function cannot modify any data members or call any member functions that aren't constant.



END C++ Specific



Example



// Example of a constant member function

class Date

{

public:

  Date( int mn, int dy, int yr );

  int getMonth() const;       // A read-only function

  void setMonth( int mn );    // A write function;

                              //    cannot be const

private:

  int month;

};



int Date::getMonth() const

{

  return month;        // Doesn't modify anything

}

void Date::setMonth( int mn )

{

  month = mn;          // Modifies data member

}

 

Désolé c'est en anglais ...

 

Automne

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est exactement ça !

 

Merci :P

 

 

En C++, le mot-clef const utilisé pour définir une méthode définit une méthode de classe (c'est à dire qu'elle ne sera pas dupliquée dans chaque instance de ta classe, mais sera, en quelque sorte, "globale" (pour cette classe)...

 

Tu ne confonds pas avec "static" là ?

Car si ce que tu dis est vrai, il n'y a aucune différence...

Partager ce message


Lien à poster
Partager sur d’autres sites
C'est exactement ça !

 

Merci :finger:

 

 

En C++, le mot-clef const utilisé pour définir une méthode définit une méthode de classe (c'est à dire qu'elle ne sera pas dupliquée dans chaque instance de ta classe, mais sera, en quelque sorte, "globale" (pour cette classe)...

 

Tu ne confonds pas avec "static" là ?

Car si ce que tu dis est vrai, il n'y a aucune différence...

 

Ah oui, exact, les méthodes de classe c'est avec static... (faut vraiment que je révise... ou que j'arrête de répondre aux posts à des heures pas possibles !)

Et pour la solution trouvée sur MSDN : "eh bin ca m'etonne pas d'eux, y'avait bien que Krosoft pour faire des extensions aussi débiles au C++ !" (déjà qu'ils ont triplé le nombre de mots-clés du C++ dans Visual Studio .Net...) tss tss tss...

Partager ce message


Lien à poster
Partager sur d’autres sites

Et pour la solution trouvée sur MSDN : "eh bin ca m'etonne pas d'eux, y'avait bien que Krosoft pour faire des extensions aussi débiles au C++ !" (déjà qu'ils ont triplé le nombre de mots-clés du C++ dans Visual Studio .Net...) tss tss tss...

 

Ben c'est sur que ca pouvait venir que d'eux des débilités de ce genre.

En tout cas, j'ai jamais vu aussi merdique que les API de Windows. C'est vraiment pensé avec les pieds par des abrutis congénitaux. De vraies daubes intergalactiques leurs APIs. Windows, GDI, TAPI, DirectX, etc ... meme combat. Quand tu vois que pour TAPI (Telephonie) tu es chargé d'allouer toi meme les buffers de travail internes de l'API ... ca fait peur quand meme. Et que pour coller une image bitmap en transparence sur un fond il faut, au moins, enchainer 10 fonctions ... ca fait pitier !!

 

Vive Micromou !! Dans un sens on devrait les remercier, c'est tellement merdique leurs outils de developpement que c'est pas demain la veille que monsieur tout le monde viendra piquer notre boulot :P

 

Automne

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×