2010-10-17 24 views
10

Neden veya neden için C++ sınıf üyesi değişkenini static mutable olarak bildirmek mümkün değil?statik değişken üye değişkenleri?

Böyle bir bildirimin yasaklanması için bir neden yoktur. Örneğin. Küresel sınıf çapında bir istatistik sağlamak gibi nedenlerle, (mantıksal) const yöntemleri ile değiştirilebilecek statik değişkene sahip olmak uygun olabilir. Yani ya bu, C++ 'da yanlış bir tasarımdır ve gereksiz yere karmaşıktır ya da göremediğim pratik ya da teorik bir neden vardır.

cevap

23

Sınıfın yerleşik olmayan statik üyeleri, zaten sınıfının herhangi bir (const ve non-const) yöntemi tarafından değiştirilebilir. mutable ile bildirimde bulunmanıza gerek yok. Bu kesinlikle hiçbir şey elde etmezdi.

1

Değiştirilebilir anahtar kelime, "const" ve bu nedenle statik olmayan üye değişkenlerinin (örn., Değiştirilebilen) işaretli statik olmayan üye değişkenlerini değiştirmesine izin verir. Statik işlevler const olamaz ve const üye işlevleri const olmayan statik üyeleri değiştirebilir. Bunun biraz kafa karıştırıcı olduğunu biliyorum, ancak bunun nedeni, değişken bir statik üye değişkenine izin verilmesinin gerekmemesidir.

İlgili konular