1. Dasturlash tillarida sinflar Do’stona funksiyalar



Yüklə 78,76 Kb.
səhifə3/6
tarix25.12.2023
ölçüsü78,76 Kb.
#161288
1   2   3   4   5   6
2-ma\'ruza

Destruktorlar. Sinfning biror ob’ekti uchun ajratilgan xotira ob’ekt yukotilgandan so‘ng bo‘shatilishi lozimdir.
Sinflarning maxsus komponentalari destruktorlar, bu vazifani avtomatik bajarish imkonini yaratadi.
Destruktorni standart shakli quyidagicha :
~ sinf_nomi ( ) {destruktor tanasi}
Destruktor parametri yoki qaytariluvchi qiymatga ega bo‘lishi mumkin emas (xatto void tipidagi).
Agar sinfda oshkor destruktor mavjud bo‘lmasa, ko‘zda tutilgan destruktor chaqiriladi.
Dastur ob’ektni o‘chirganda destruktor avtomatik chaqiriladi.
Misol:
#include
using namespace std;
class Person
{
public:
Person ()
{
cout<<"Yaratidi"<}
~Person ()
{
cout<<"O'chirldi"<}
};
int main()
{
{
Person work;
}
int kk;cin>>kk;
return 0;
}
Natija
Yaratidi
O'chirldi
2. Do’stona funksiyalar. Sinfning private va protected qismiga sinfga tegishli bo’lmagan friend funksiya murojat qilishi mumkin. Friend funksiyalar sinfning ichida friend kalit so’zi bilan yoziladi.
E’lon qilinishi:
class myclass {
…..
friend int sum(myclass x);
….
};
Albatta friend funksiyalar sinfdan tashqarida mavjud bo’ladi va ushbu do’stona funksiya sinfning barcha sohalariga murojaat qila olishi mumkin.
class sm{
int a, b;
public:
friend int sum(myclass x);
void set_ab(int i, int j) { a = I; b = j; }
};
int sum(myclass x) {
return x.a + x.b; //sum() hech qaysi classga tegishli emas.
}
int main() {
myclass n;
n.set_ab(3, 4);
cout << sum(n);
return 0;
}
Do’stona (friend) sinflar. Bir sin boshqa bir sinfga do’stona bo’lishi mumkin. Bunda sinflar bir – birining a’zolaridan foydalanish imkoniyatiga ega bo’ladi. Bunda shu narsaga e’tibor berish lozimki, biror sinfga do’stona bo’ladigan sinf (ya’ni friend kalit so’zi orqali e’lon qilinadigan sinf), mazkur sinfning a’zolaridan foydalanish imkoniyatini yaratadi
E’lon qilinishi:
class myclass {
…..
friend someclass b;
….
};
Do’stona sinfdan foydalanish uchun quyida misol keltirilgan. Bunda e’tibor berishimiz lozimki, TwoValues sinfi Min sinfiga do’stona bo’lib, bunda Min sinfi TwoValues sinfining a’zolaridan foydalanishi mumkin.
class TwoValues {
int a, b;
public:
TwoValues(int i, int j) { a = i; b = j; }
friend class Min;
};
class Min {
public:
int min(TwoValues x) { return x.a < x.b ? x.a : x.b; }
};
int main() {
TwoValues ob(10, 20);
Min m;
cout << m.min(ob);
return 0;
}

Yüklə 78,76 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə