1-ma’ruza C++ da Sinflar va obyektlar. Konstruktor va destruktor. Sinf usullari reja


Download 86.61 Kb.
bet13/23
Sana09.06.2023
Hajmi86.61 Kb.
#1472539
1   ...   9   10   11   12   13   14   15   16   ...   23
Bog'liq
Algoritmlashga kirish fanidan majmua

Sinfning konstansta ob’yektlari va konstanta funksiya-a’zolari
Sinfning funksiya-a’zolari parametrlar ro’yxatidan keyin keluvchi const modifikatori bilan e’lon qilinishi mumkin. Bunday funksiya sinf berilganlar- a’zolari qiymatlarini o’zgartira olmaydi va sinfning konstanta bo’lmagan funksiya– a’zolarini chaqirishi mumkin emas. Konstanta funksiya-a’zosi bo’lgan sinfga misol keltiramiz.
classNuqta
{
int x,y;
public:
Nuqta(int _x, int _y);
void Qiymat_Berish(int x0, int y0);
//konstantafunksiya-a’zo
void Qiymat_Olish(int xx, int yy) const;
};
Nuqta::Nuqta(int _x, int _y)
{ x=_x; y=_y;} voidNuqta::Qiymat_Berish(int x0, int y0)
{ x=x0; y=y0;}
voidNuqta::Qiymat_Olish(int &xx, int &yy)const
{ xx=x; yy=y; }
Xuddi shunday, konstanta ob’yektlar yaratish mumkin. Buning uchun ob’yekt e’loni oldiga const modifikatori qo’yilishi kerak.
const Nuqta koord(3,6);
const kalit so’zi kompilyatorga ushbu ob’yektning holati o’zgarmasligi kerakligini bildiradi. Shu sababli ob’yekt berilgan-az’olari qiymatini o’zgartiradigan funksiya–a’zosini chaqirishi uchrasa, kompilyator xato haqida xabar beradi. Bu qoidaga konstanta funksiya-a’zolarni chaqirish rioya qilmaydi, chunki o’z mazmuniga ko’ra ular berilgan–a’zolarni qiymatini o’zgartira olmaydi. Yuqorida e’lon qilingan Nuqta sinfini konstanta ob’yekt ishlatishiga misol.

// Nuqta sinf e’loni va aniqlanishi int main()


{
Nuqtanuqta1(3,7);
Const Nuqta nuqta2(8,10); //Konstanta ob’yekt int a,b;
nuqta1. Qiymat_Olish (a,b); nuqta2. Qiymat_Berish(2,3);// Xato
nuqta2. Qiymat_Olish(a,b); // To’g’ri return 0;
}
Konstanta funksiya–a’zolarning berilganlar–a’zolar bilan ishlashda bog’liq cheklovlarni “aylanib o’tish” uchun mutable kalit so’zi aniqlangan.
Bu kalit so’z sinfning qaysi berilgan-a’zosi konstanta funksiya-a’zolar tomonidan o’zgartirilishi mumkin ekanligini ko’rsatadi. Statik va konstanta berilganlar-a’zolariga mutable kalit so’zini ishlatish mumkin emas, u berilganlar turining modifikatori sifatida ishlatiladi.
Misol.
#include class Sinf
{
mutable int count;
mutable const int * intPtr;//O’rinli, garchi
// ko’rsatgich konstanta butun songa ko’rsatsa
// ham o’zi konstanta emas public:
int Funktsiya(int i=0) const
{
count=i++; intPtr =&i; cout<<*intPtr; return count;
}
};
int main()
{
Sinf S; S.Funktsiya(); return 0;
}
Dastur ishlashi natijasida ekranga 1 chop etiladi.
Shu vaqtgacha tuzgan dasturlarimiz berilgan ma’lumotlar ustida biror-bir amallarni bajaruvchi proseduralar ketma-ketligidan iborat edi. Prosedura va funksiyalar ham o’zida aniqlangan ketma-ket komandalar to’plamidan iboratdir.
Ob’yektga yo’naltirilgan dasturlashning asosiy maqsadi berilganlar va ular ustida amal bajaruvchi proseduralarni yagona ob’yekt deb qarashdan iboratdir. Masalan: non, avtomobil, odam … ob’yektlari.



Download 86.61 Kb.

Do'stlaringiz bilan baham:
1   ...   9   10   11   12   13   14   15   16   ...   23




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling