Condividi tramite


lnt-make-member-function-const

Quando una funzione membro non modifica lo stato dell'oggetto, annotarla con la const parola chiave . Queste indicazioni provengono dalle linee guida di base di C++Con.2.

Esempio

Il linter contrassegna il codice seguente due volte perché getValue() e getRadius() non modifica lo stato dell'oggetto:

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

Come risolvere il problema

Contrassegnare le funzioni const membro quando non modificano lo stato dell'oggetto. In questo modo i lettori del codice e il compilatore sanno che la funzione è sicura da chiamare su un const oggetto .

Nell'esempio seguente è const stato aggiunto a getValue() e 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'editor può apportare questa modifica. Posizionare il cursore sul simbolo contrassegnato e scegliere Mostra potenziali correzioni e quindi Imposta membro const:

Screenshot dell'editor che suggerisce di rendere il membro const.

Il cursore si trova sulla riga int getValue() e **Mostra possibili correzioni** è apparso ed è stato scelto. Ora **Make member const** è visibile e mostra la funzione get value const aggiunta. È ora possibile scegliere **Make member const** per apportare la modifica.

Apportare questa modifica per tutte le funzioni membro contrassegnate.

Osservazioni:

Introdotto in Visual Studio 2022 17.8, questo controllo è incentrato sull'utilizzo const delle funzioni membro nel codice C++. Le linee guida di base di C++ consigliano di contrassegnare le funzioni membro come const quando non modificano lo stato dell'oggetto.

L'implementazione corrente di questo controllo consente di aggiungere const alle funzioni membro dopo la dichiarazione. È consigliabile dichiarare le funzioni membro come const dall'inizio se non modificano lo stato dell'oggetto.

Vedi anche

Panoramica dell'linter del codice IntelliSense per C++