Partilhar via


lnt-make-member-function-const

Quando uma função membro não modifica o estado do objeto, anote-a com a palavra-chave const. Esta orientação vem do C++ Core Guideline Con.2.

Exemplo

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

Marcar funções de membro const quando não modificam o estado do objeto. Isso permite que os leitores do código e do compilador saibam que a função é segura para chamar um objeto const.

No exemplo a seguir, const foi adicionado ao 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, em seguida, Tornar membro const:

Captura de tela do editor sugerindo fazer membro const .

O cursor está na linha int getValue() e **Show possíveis correções** apareceu e foi escolhido. Agora **Make member const** é visível e mostra a função get value com const adicionado a ela. Agora você pode escolher **Make member const** para fazer a alteração.

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

Comentários

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

A implementação atual desta verificação permite que você adicione const às funções de membro após sua declaração. É uma boa prática declarar funções de membro como const desde o início se elas não modificarem o estado do objeto.

Ver também

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