Delen via


lnt-make-member-function-const

Wanneer een lidfunctie de status van het object niet wijzigt, maakt u er aantekeningen van met het trefwoord const. Deze richtlijnen zijn afkomstig van de C++ Core Guideline Con.2.

Voorbeeld

De linter markeert de volgende code twee keer omdat getValue() en getRadius() de status van het object niet wijzigen:

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

Het probleem oplossen

Markeer lidfuncties const wanneer ze de status van het object niet wijzigen. Hiermee kunnen lezers van de code en de compiler weten dat de functie veilig is om een const-object aan te roepen.

In het volgende voorbeeld is const toegevoegd aan getValue() en 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; 
}  

De editor kan deze wijziging voor u aanbrengen. Plaats de cursor op het gemarkeerde symbool en kies Mogelijke oplossingen weergeven en Lid constmaken:

Schermopname van de editor die voorstelt om const lid te maken.

De cursor bevindt zich op de regel int getValue() en **Potentiële oplossingen weergeven** verschenen en is gekozen. **Maak lid const** is nu zichtbaar en toont de functie get value met const toegevoegd. U kunt nu kiezen voor **Lid Const maken** om de wijziging aan te brengen.

Breng deze wijziging aan voor alle gemarkeerde lidfuncties.

Opmerkingen

Deze controle werd geïntroduceerd in Visual Studio 2022 17.8 en richt zich op het gebruik van const voor lidfuncties binnen C++-code. De C++-basisrichtlijnen raden aan om lidfuncties te markeren als const wanneer ze de status van het object niet wijzigen.

Met de huidige implementatie van deze controle kunt u const aan lidfuncties toevoegen na de declaratie. Het is een goede gewoonte om lidfuncties te declareren als const vanaf het begin als ze de status van het object niet wijzigen.

Zie ook

overzicht van IntelliSense-codeliner voor C++