Найз класс & Найз функц
Нэг
класс нь нөгөө класстай найз,классууд бие биедээ найз буюу харилцан найз
классууд гэсэн хоёр хэлбэртэй.
Найз классуудын хувьд дараах
онцлогуудтай.
qХэрэв олон найз классуудтай бол
бүгдийг тоочих ёстой.
qКлассын найз класс нь уг классын private
, protected гишүүдэд
хандаж чадна.
qКласс өөрөө өөртэйгээ найз байж
болохгүй.
qНайз класс нь классын өмнө , хойно
хаана ч зарлагдсан байж болно.
Бичигдэх
хэлбэр
class School1;
//Класс зарлаж байна.
class School2
{ private:
char
name; //Найз
класс нь энд зарлагдсан гишүүдэд хандаж чадна.
int on;
public:
void get() // Утга авдаг функц бөгөөд найз класс хандаж чадна.
{
cout<<"School
name";
cin>>name;
cout<<"School
year";
cin>>on;
}
friend
class School1; //найз класс
};
Жишээ:
#include<iostream>
#include<string.h>
using namespace std;
classA;
class B;
class C
{ char
name;
int
on;
public:
void
get() { cout<<"School
name"; cin>>name;
cout<<"School
year"; cin>>on; }
friend
class B; };
class A
{ char name;
int
on;
public:
void
get()
{ cout<<"School
name"; cin>>name;
cout<<"School
year"; cin>>on; }
friend
class B };
class B
{ char name;
int
on;
public:
void
get()
{ cout<<"School
name";
cin>>name;
cout<<"School
year";
cin>>on; }
friend
class C; };
int main(void)
{ A H;
H.get();
}
Ердийн
найз функц гэдэг нь ямар нэгэн классын гишүүн
биш функц класст найзаар зарлагдсан байхыг хэлдэг. Энэ функц нь класс объектын
нууцлагдсан гишүүнд хандаж чадна. Зарлахдаа friend
нөөц үгийн ард функцийн нэрийг бичиж өгнө.
Friend void Show()
Гишүүн найз функц
Классын
гишүүн функц өөр классын найз функц байж болох ба ийм гишүүн функцийг
Найз
гишүүн функц гэнэ.
Энэ
функц нь өөрийн классын бүх гишүүдэд хандах эрхтэй байхаас гадна найз
классынхаа бүх гишүүнд хандах эрхээр хангагдана.
Жишээ:
#include <iostream>
using namespace std;
class Tegsh;
// forward declaration
class Gurwaljin {
int
width, height;
public:
Gurwaljin(int w =
1, int h =
1):width(w),height(h){}
friend
void display(Gurwaljin &,
Tegsh &);
};
class Square {
int
side;
public:
Tegsh(int s =
1):side(s){}
friend
void display(Gurwaljin &,
Tegsh &);
};
void display(Gurwaljin
&r, Tegsh
&s) {
cout
<< "Gurwaljin:
" << r.width * r.height
<< endl;
cout
<< "Tegsh:
" << s.side * s.side
<< endl;
}
int main () {
Gurwaljin
rec(5,10);
Tegsh sq(5);
display(rec,sq);
return
0;
}