Share via


lnt-make-member-function-const

Cuando una función miembro no modifica el estado del objeto, anótela con la palabra clave const. Esta guía procede de la Guía principal de C++ Con.2.

Ejemplo

El linter marca el código siguiente dos veces porque getValue() y getRadius() no modifican el estado del objeto:

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

Solución del problema

Marque las funciones miembro const cuando no modifiquen el estado del objeto. Esto permite a los lectores del código y al compilador saber que la función es segura para llamar en un objeto const.

En el ejemplo siguiente, const se ha agregado a getValue() y 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; 
}  

El editor puede realizar este cambio. por usted. Coloque el cursor en el símbolo marcado y elija Mostrar posibles correcciones. A continuación, haga const de miembro:

Screenshot of the editor suggesting to make member const.

El cursor está en la línea int getValue() y **Show potential fixes** (Mostrar posibles correcciones) aparece y está seleccionado. Ahora aparece **Make member const** (hacer que el miembro sea const) y muestra la función get value con const agregado. Ya puede elegir **Make member const** para realizar el cambio.

Realice este cambio para todas las funciones miembro marcadas.

Comentarios

Esta comprobación se introdujo en Visual Studio 2022 17.8 y se centra en el uso de funciones miembro const en código de C++. C++ Core Guidelines recomienda marcar las funciones miembro como const cuando no modifican el estado del objeto.

La implementación actual de esta comprobación permite agregar const a funciones miembro después de su declaración. Se recomienda declarar funciones miembro como const desde el principio si no modifican el estado del objeto.

Consulte también

Información general sobre el linter de código IntelliSense para C++