Aracılığıyla paylaş


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:

Üye sabiti yapmayı öneren düzenleyicinin ekran görüntüsü.

İ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.

Ayrıca bkz.

C++ için IntelliSense kod linter'e genel bakış