lnt-make-member-function-const
Ha egy tagfüggvény nem módosítja az objektum állapotát, jelölje meg a const
kulcsszóval. Ez az útmutató a Con.2C++ core útmutatójából származik.
Példa
A linter kétszer jelöli a következő kódot, mert getValue()
és getRadius()
nem módosítják az objektum állapotát:
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;
}
A probléma megoldása
Jelölje meg a tagfüggvényeket const
, ha nem módosítják az objektum állapotát. Ez lehetővé teszi a kód olvasóinak és a fordítónak, hogy a függvény biztonságosan meghívható egy const
objektumra.
Az alábbi példában const
hozzá lett adva getValue()
-hez és getRadius()
-höz.
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;
}
A szerkesztő elvégezheti ezt a módosítást. Helyezze a kurzort a megjelölt szimbólumra, és válassza a Lehetséges javítások megjelenítése, majd A tagok konstanssá tétele:
A kurzor az int getValue() soron van, ekkor megjelent és ki lett választva a **Lehetséges javítások megjelenítése** opció. Ekkor a **Tagi const állítás** láthatóvá válik, és megjeleníti a get value függvényt, amelyhez constot adtunk hozzá. Most már választhatja a **Tagállandóvá tétel** lehetőséget a változtatás elvégzéséhez.
Végezze el ezt a módosítást az összes megjelölt tagfüggvény esetében.
Megjegyzések
A Visual Studio 2022 17.8-ban bevezetett ellenőrzés a C++ kód tagfüggvényeinek const
használatára összpontosít. A C++ alapvető irányelvek azt javasolják, hogy a tagfüggvényeket const
jelöljük meg, ha nem módosítják az objektum állapotát.
Az ellenőrzés jelenlegi megvalósítása lehetővé teszi, hogy const
-t adjunk hozzá a tagfüggvényekhez a deklarációjuk után. Érdemes a tagfüggvényeket kezdetektől const
deklarálni, ha nem módosítják az objektum állapotát.