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:

Messages recommandés

Posté(e)

: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;

Posté(e)

*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).

Posté(e)

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 ?

Posté(e)

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

Posté(e)

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...

Posté(e)
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...

Posté(e)

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

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...