Partilhar via


lnt-make-member-function-const

Quando uma função membro não modificar o estado do objeto, anote-a com a palavra-chave const. Essas diretrizes foram extraídas das Diretrizes Principais do C++: Con.2.

Exemplo

O linter sinaliza o seguinte código duas vezes porque getValue() e getRadius() não modifica o estado do 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; 
} 

Como corrigir o problema

Marque as funções membro como const quando elas não modificarem o estado do objeto. Isso permite que os leitores do código e o compilador saibam que é seguro chamar a função em um objeto const.

No seguinte exemplo, const foi adicionado 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; 
}  

O editor pode fazer essa alteração para você. Coloque o cursor sobre o símbolo sinalizado e escolha Mostrar possíveis correções e Tornar o membro const:

Screenshot of the editor suggesting to make member const.

O cursor está na linha int getValue() e a opção **Mostrar possíveis correções** foi exibida e escolhida. Agora **Tornar o membro const** está visível e mostra a função get value com a adição de const a ela. Agora você pode escolher **Tornar o membro const** para fazer a alteração.

Faça essa alteração em todas as funções membro sinalizadas.

Comentários

Introduzida no Visual Studio 2022 17.8, essa verificação tem como foco o uso de const nas funções membro no código C++. As Diretrizes Principais do C++ recomendam marcar as funções membro como const quando elas não modificam o estado do objeto.

A implementação atual dessa verificação permite que você adicione const às funções membro após a declaração. É uma boa prática declarar as funções membro como const desde o início, caso elas não modifiquem o estado do objeto.

Confira também

Visão geral do linter de código do IntelliSense para C++