Wednesday, January 4, 2017

friend class and friend function


Найз класс & Найз функц
Image result for friend class and friend function
Нэг класс нь нөгөө класстай найз,классууд бие биедээ найз буюу харилцан найз классууд гэсэн хоёр хэлбэртэй.
      Найз классуудын хувьд дараах онцлогуудтай.
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();  }
Image result for friend class and friend function

Ердийн найз функц гэдэг нь ямар нэгэн классын гишүүн биш функц класст найзаар зарлагдсан байхыг хэлдэг. Энэ функц нь класс объектын нууцлагдсан гишүүнд хандаж чадна. Зарлахдаа 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;
} 

No comments:

Post a Comment