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


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

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;
}

  1. Do’stona (friend) sinflar

Bir class boshqa bir class ga do’st bo’lishi mumkin. Bunda sinflar bir – birining a’zolaridan foydalanish imkoniyatiga ega bo’ladi. Bunda shu narsaga e’tibor berish lozimki, biror sinfga do’st 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’st sinfdan foydalanish uchun quyida misol keltirilgan. Bunda e’tibor berishimiz lozimki, TwoValues sinfi Min sinfiga do’st 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; }

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