'değişken' anahtar kelime herhangi bir amaç değişken sabit bir fonksiyon tarafından değiştirilmesi için izin dışında var mı?
Bir süre önce mutable
anahtar sözcüğüyle bir sınıf üye değişkeni işaretli bazı kod rastladım. Sadece const
bir yöntem içinde bir değişkeni değiştirmek için izin verir görebildiğim kadarıyla:
class Foo
{
private:
mutable bool done_;
public:
void doSomething() const { ...; done_ = true; }
};
Bu anahtar kelime sadece kullanımı veya gözle görülenden daha fazlası var mı? Beri kullanılan Bu teknikte bir sınıf, bir işaretleme boost::mutex
olarak kesilebilir izin const
fonksiyonları için kilit dişli-güvenlik nedeniyle, ama, dürüst olmak gerekirse, ben de öyle hissediyorum biraz kesmek.
CEVAP
Bit sabit ve mantıksal sabit farklılaşmayı sağlar. Mantıklı inş ortak arabirim, kilitleme örnekte olduğu gibi görünür bir nesne bir şekilde değiştirmez. Başka bir örnek, bir değer istendiğinde ilk kez hesaplar, ve sonucu önbelleğe sınıf olacaktır.
Beri c 11 mutable
şeylerin değeri tarafından yakalanan değiştirilebilir olduğunu göstermek için bir lambda kullanılabilir (varsayılan değil):
int x = 0;
auto f1 = [=]() mutable {x = 42;}; // OK
auto f2 = [=]() {x = 42;}; // Error: a by-value capture cannot be modified in a non-mutable lambda
Neden zaten değişken sabit olması gere...
nasıl bir python değişken bir fonksiyo...
Lateks bir değişken tanımlamak için he...
Bir döngü içinde bir değişken bildirme...
Nasıl başka bir değişen bir değişken s...