9- ma’ruza mavzu: do’ST FUNKSIYA VA do’st sinflar


Download 50.06 Kb.
bet10/12
Sana10.02.2023
Hajmi50.06 Kb.
#1186380
1   ...   4   5   6   7   8   9   10   11   12
Bog'liq
9- ma\'ruza matni

Ko’rsatkichlar

Obyektlarga ko’rsatkich (pointer)
Obyektga yo’naltirilgan dasturlashda sinflar orqali obyektlar ustida turli xil bajariladigan amallar mavjud. Obyektlarga boshqa o’zgarvchilar kabi ko’rsatkich orqali murojaat qilish mumkin. Obyekt a’zolariga ko’rsatkich orqali murojat qilish uchun .(nuqta) o’rniga -> operatori ishlatiladi. Quyida misol keltirilgan:

class c1 {


int a;
public: int get_num() { return a;}
c1(int x){ a = x; }
};
c1 a = 2, *p, b[2]; // p ko’rsatkich e’lon qilindi
p = &a; // a obyektning adresi p ko’rsatkichga olindi
p->get_num(); // ko’rsatkich orqali obyekt a’zosiga murojat
p = b; // b obyektning 1 chi elementi adresi p ko’rsatkichga olindi

Ko’rsatkichlarda bajariladigan +, - amallarni obyektlar bilan ham qo’llash imkoniyati mavjud bo’lib, oddiy ko’rsatkichlardagi barcha xususiyatlar ushbu holatda qo’llanilish jarayonida ham to’liq saqlanib qoladi.


class c1 {
int a;
public: int get_num() { return a;}
c1(int x){ a = x; }
};
c1 a[3] = {1,2,3}, *p;
p = a; // a obyektning 1-adresi p ko’rsatkichga olindi
p->get_num(); // output 1
p++; // p keyingi obyektni ko’rsatadi
p->get_num(); // output 2

Obyekt massiviga ko’rsatkich quyidagicha misol orqali amalga oshiriladi. Bunda c1 sinf tipida a obyekt massivi e’lon qilingan va p sinf tipidagi ko’rsatkichga obyekt massivi o’zlashtirilgan.


class c1 {
int a;
public: int get_num() { return a;}
c1(int x){ a = x; }
};
int main() {
c1 a[3] = {1,2,3};
c1 *p;
p = a;
for(int i=0; i<3; i++)
cout<<(p+i)->get_num();
return 0;
}


Obyekt a’zolarini ko’rsatkichga olish

class c1 {


public: int a;
int get_num() { return a;}
c1(int x){ a = x; }
};
c1 b = 4;
int *p;
p = &b.a; // c1.a ning adresi p ko’rsatkichga olindi
*p = 8; // b.a ning qiymati 8 ga o’zgartirildi
cout<8

Download 50.06 Kb.

Do'stlaringiz bilan baham:
1   ...   4   5   6   7   8   9   10   11   12




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