lnt-make-member-function-const
Üye işlevi nesnenin durumunu değiştirmediğinde, nesneye const
anahtar sözcüğüyle ek açıklama ekleyin. Bu kılavuz C++ Core Guideline Con.2'den gelir.
Örnek
Linter, nesnenin durumunu değiştirmediğinden getValue()
ve getRadius()
değiştirmediğinden aşağıdaki kodu iki kez bayrakla işaretler:
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;
}
Sorunu giderme
Nesnenin durumunu değiştirmediklerinde üye işlevlerini const
işaretleyin. Bu, kod okuyucularının ve derleyicinin işlevin bir const
nesne üzerinde çağrılmak için güvenli olduğunu bilmesini sağlar.
Aşağıdaki örnekte ve const
getRadius()
öğesine getValue()
eklenmiştir:
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;
}
Düzenleyici bu değişikliği sizin için yapabilir. İmleci bayrak eklenmiş simgenin üzerine getirin ve Olası düzeltmeleri göster'i ve ardından Üye sabiti yap'ı seçin:
İmleç int getValue() satırındadır ve **Olası düzeltmeleri göster** görüntülendi ve seçildi. Şimdi **Üye yap const** görünür ve buna const eklenmiş olan get value işlevini gösterir. Artık değişikliği yapmak için **Üyeyi sabit yap** seçeneğini belirleyebilirsiniz.
Bayrak eklenmiş tüm üye işlevleri için bu değişikliği yapın.
Açıklamalar
Visual Studio 2022 17.8'de kullanıma sunulan bu denetim, C++ kodundaki üye işlevlerinin kullanımına odaklanır const
. C++ Temel Yönergeleri, nesnenin durumunu değiştirmediklerinde üye işlevlerinin olarak const
işaretlenmesi önerilir.
Bu denetimin geçerli uygulaması, bildirimlerinden sonra üye işlevlerine eklemenizi const
sağlar. Nesnenin durumunu değiştirmezse, en baştan üye işlevleri bildirmek const
iyi bir uygulamadır.