Sinf2 obekt2(3);
if (Sinf2.Karrali_Sonlar(obekt1))
cout<<”Sonlar karrali!”;
else cout<<”Sonlar karrali emas!”;
return 0;
}
C++ тили нафақат дўст функцияларни, балки дўст синфларни эълон қилиш мумкин. Дўст синфга синфнинг барча аъзоларига мурожаат қилишга тўла рухсат беради. Дўст синфни эълон қилиш учун синф эълонига дўст синфни friend калит сўзи билан киритиш етарли. Масалан:
class Sinf
{
//…
friend class Dust_Sinf;
}
Бу ерда Sinf синфга дўст Dust_Sinf синфи эълон қилинган.
Синф ўзини бошқа бир иккинчи синф дўсти деб эълон қила олмайди. Бунинг учун у иккинчи синфда дўст деб эълон қилиниши керак. Масалан:
#include
class Sinf1
{
//Sinf2 синфи Sinf1 синфининг дўсти деб эълон қилинмоқда
friend class Sinf2;
int x;
void IncX(){x++;}
public:
Sinf1(){x=0;}
Sinf1(int _x){x= _x;}
};
class Sinf2
{
Sinf1 sinf1;
public:
void x_qiymati();
};
void Sinf2:: x_qiymati()
{
cout<
sinf1.IncX();
cout<
}
int main()
{
Sinf2 sinf2;
Sinf2.x_qiymati();
Return 0;
}
Синфлар бир-бирини дўст деб эълон қилиши мумкин. Лекин бу ҳолат синфлар шажараси чуқур ўйламасдан тузилганлигининг далолати ҳисобланади. Шунга қарамасдан С++ тили бунга имкон беради. Ўзаро дўст синфлар қуйидагича эълон қилинган бўлиши керак:
class Sinf2; //синфнинг тўлиқмас эълони
class Sinf1
{
friend class Sinf2;
//…
};
class Sinf2
Do'stlaringiz bilan baham: |