Język C++
mutable
[słowo kluczowe] Umożliwia modyfikowanie zmiennej klasy wewnątrz metody zadeklarowanej jako stała.Opis szczegółowy
Słowo kluczowe
mutable umożliwia modyfikowanie zmiennej klasy wewnątrz metody zadeklarowanej jako stała. Słowa kluczowego nie należy nadużywać. Zazwyczaj niniejsze słowo kluczowe stosuje się przy sekcjach krytycznych.
Fragment kodu z użyciem biblioteki boost
class CKlasa
{
private:
mutable boost::mutex m_cs;
int m_licznik;
public:
int ile() const
{
boost::mutex::scoped_lock lock( m_cs );
return m_licznik;
}
};
Przykład
Poniższy przykład pokazuje ideę działania, jednak nie jest dobrym przykładem zastosowania słowa kluczowego
mutable:
#include <cstdio>
class CMutable
{
private:
mutable int zmienna;
public:
CMutable()
: zmienna( 0 )
{ }
void ustaw( int nowaWartosc ) const
{
zmienna = nowaWartosc;
}
int daj() const
{
return zmienna;
}
};
int main()
{
CMutable klasa;
klasa.ustaw( 123 );
printf( "Wartosc = %d\n", klasa.daj() );
}
Błędy kompilacji
Jeśli zabraknie słowa kluczowego
mutable dla zmiennej, która jest modyfikowana w metodzie zadeklarowanej jako stała to wystąpi następujący błąd kompilacji:
In member function 'void CMutable::ustaw(int) const':
error: assignment of data-member 'CMutable::zmienna' in read-only structure
Linki zewnętrzne
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.