116
qilinishi mumkin emas. Quyidagi misol ticks o‘zgaruvchisini vaqtli uzilishlar qayta
ishlagichi modifikatsiya qiladigan taymerni ishga tushirishga misol bo‘la oladi.
volatile int ticks;
void timer( ) // Тaymer funksiyasini e’lon qilish
tickC++;
void wait (int interval)
{
ticks
=0; while (ticks < interval); // Kutish sikli
}
Aytaylik, uzilishni qayta ishlatgichi - timer real vaqt soatidagi apparat uzilishi
bilan tegishli tarzda assotsiatsiya qilindi. ticks o‘zgaruvchisining qiymati ushbu
qiymat parametri tomonidan berilgan vaqt intervaliga teng kelmaguncha, wait
protsedurasi kutish siklini ishlataveradi. C++kompilyatori sikl ichidagi har bir
qiyoslash oldidan volatile ticks o‘zgaruvchisining qiymatini, sikl ichidagi
o‘zgaruvchining qiymati o‘zgarmaganiga qaramay, ortiqcha yuklashi lozim. Ayrim
optimallashtiruvchi kompilyatorlar bunday «xavfli»xatoga yo‘l qo‘yishlari mumkin.
Хatto konstantali ifodaga kirganiga qaramay o‘zgartirilishi mumkin bo‘lgan
o‘zgaruvchan o‘zgaruvchining boshqa bir turi mutable modifikatori yordamida e’lon
qilinadi:
mutable
;
mutable kalit-so‘zning vazifasi shundan iboratki, u biron-bir sinf ma’lumotlari
a’zolarini spetsifikatsiya qiladi, bunda ushbu ma’lumotlar a’zolari mana shu sinfning
konstantali funksiyalari tomonidan modifikatsiya qilinishi mumkin bo‘lishi kerak.
Ma’lumotlar a’zosi count ni F1 konstantali funksiya modifikatsiya qiladigan misolni
ko‘rib chiqaylik:
class A{
public: mutable int count; int F1 (int p=0)const// F1 funksiyasini e’lon qilish
count=p++return count;//PI count ni qaytarib beradi
}
void vain(){