lnt-make-member-function-const
Quand une fonction membre ne modifie pas l’état de l’objet, annotez-la avec le mot clé const
. Cette aide provient de la directive C++ Core Guideline Con.2.
Exemple
Le linter signale le code suivant deux fois, car getValue()
et getRadius()
ne modifient pas l’état de l’objet :
class MyClass
{
public:
int getValue() { return value; } // Flagged: ‘getValue’ doesn't modify the object's state.
void setValue(int newValue) { value = newValue; } // OK: ‘setValue’ modifies the object's state.
private:
int value = 42;
};
double getRadius()
{ // Flagged: ‘getRadius’ doesn't modify the object's state.
return radius;
}
Pour résoudre le problème
Marquez les fonctions membres const
quand elles ne modifient pas l’état de l’objet. Cela permet aux lecteurs du code et au compilateur de savoir que la fonction est sécurisée pour appeler un objet const
.
Dans l’exemple suivant, const
a été ajouté à getValue()
et getRadius()
:
class MyClass
{
public:
int getValue() const { return value; } // Added const
void setValue(int newValue) { value = newValue; } // OK: ‘setValue’ modifies the object's state.
private:
int value = 42;
};
double getRadius() const // added const
{ // ‘getRadius’ doesn't modify the object's state.
return radius;
}
L’éditeur peut faire ce changement pour vous. Placez le curseur sur le symbole marqué et choisissez Afficher les corrections potentielles, puis Make member const (Rendre le membre const) :
Le curseur se trouve sur la ligne int getValue() et **Afficher les corrections potentielles** est affiché et a été choisi. À présent, **Make member const** (Rendre le membre const) est visible et affiche la fonction get value avec const ajouté. Vous pouvez à présent choisir **Make member const** (Rendre le membre const) pour apporter la modification.
Apportez cette modification à toutes les fonctions membres marquées.
Notes
Introduit dans Visual Studio 2022 17.8, cette vérification se concentre sur l’utilisation de const
pour les fonctions membres dans le code C++. Les directives C++ Core Guidelines recommandent de marquer les fonctions membres comme const
quand elles ne modifient pas l’état de l’objet.
L’implémentation actuelle de cette vérification vous permet d’ajouter const
aux fonctions membres après leur déclaration. Il est recommandé de déclarer les fonctions membres en tant que const
dès le début si elles ne modifient pas l’état de l’objet.