Partager via


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

Screenshot of the editor suggesting to make member 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.

Voir aussi

Vue d’ensemble du linter de code IntelliSense pour C++