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
Do'stlaringiz bilan baham: |