2010-01-08 3 views
2

dansQuelle est l'utilisation de const ici

int salary() const { return mySalary; }

pour autant que je comprends const est pour ce pointeur, mais je ne suis pas sûr. Quelqu'un peut-il me dire quelle est l'utilisation de const ici?

+0

Vous avez tout à fait raison, cela affecte le ceci *. –

Répondre

7

Cela ressemble à ce que vous avez eu la bonne idée, en C++ const sur une méthode d'un objet signifie que la méthode ne peut pas modifier l'objet.

Par exemple, ce ne serait pas autorisé:

class Animal { 
    int _state = 0; 

    void changeState() const { 
    _state = 1; 
    } 
} 
+0

Cette syntaxe est uniquement valable pour C++ 0x – ergosys

+0

Quelle syntaxe? Je n'ai pas tapé de C++ depuis un moment, donc j'ai peut-être quelque chose qui ne va pas, aucune garantie, mais en ignorant les erreurs je suis sûr que vous avez l'idée générale, et l'idée générale fait partie du C++ normal. –

+0

Je pourrais me tromper, j'utilisais MSVC++ version 6 (il y a des années), peut-être que ce n'était pas conforme à la spécification, Microsoft a-t-il jamais fait quelque chose comme ça? ;) –

0

Il est une méthode const. Cela signifie qu'il ne modifiera pas les variables membres de la classe et n'appellera pas les méthodes non-const. Ainsi:

const foo bar; 
bar.m(); 

est légal si m est une méthode const mais autrement ne serait pas.

5

Lorsque la fonction est marquée const, elle peut être appelée sur un pointeur/référence const de cette classe. En effet il est dit Cette fonction ne modifie pas l'état de la classe.

0

Cela signifie que la fonction peut être appelée sur un objet const; et à l'intérieur de cette fonction membre, le pointeur this est const.

0

Cela garantit simplement que l'appel de salary() ne modifie pas l'état de l'objet. IE, il peut être appelé avec un pointeur ou une référence const.

0

A const après la fonction d'une classe, signifie que cette fonction ne modifierait pas les objets membres de cette classe. Une seule exception, lorsque la variable membre est marquée avec Mutable.

Questions connexes