friend class in C++ in Hindi

In this Page, we will discuss two following concept,

[lwptoc]


यह एक friend function की तरह ही होता है, यहाँ पर function की जगह class ले लेता है। इसमें, एक class दूसरे class या कई class का friend होता है।

जहां कई class एक दूसरे class के private member को access कर सकते हैं।

यहाँ दो class “first “और “second ” का एक उदाहरण दिया गया है, जहाँ दूसरा class पहली class के private members को access करता है-

friend-class-in-cpp with example

चलिए इसे एक program की सहायता से समझते हैं-

लेकिन कुछ शर्तें होती हैं, इसमें पहली class , दूसरी class का friend होता है, लेकिन दूसरी class , पहली class का friend नहीं होता अर्थात केवल पहली class ही दूसरी class के private member को access कर सकता है। एक तरह से कह सकते हैं कि दोस्ती एकतरफा होती है।friend-Class-example-in-cpp

चलिए इसे एक program की मदद से समझते हैं –

#include<iostream.h>
#include<conio.h>
#include<stdio.h>

 class First
  {
     int a;
     friend class Second; //second is declaration in private mode of first class
   public:
     void get_num(int x)
       {
          a = x;
       }
  }; // first class terminate

 class Second
  {
     int b;
    public:
      void get_num(int y)
       {
          b = y;
       }

   void get_sum( First obj1) // second class member defination
     {
       int sum;
       sum = obj1.a + b; // accessing first class member using first class object f1
       cout<<"Total: "<<sum;
     }
  };   // second class terminate

void main() // main function start here
 {
   int a,b;
   clrscr();

   first obj2;            // first class object declare
   second s;        // second class object declare

   cout<<"Enter two number: ";
   cin>>a>>b;

   obj2.get_num(a);          // first class function call
   s.get_num(b);         // second class function call
   s.get_sum(obj2);        // friend function call

   getch();
}

OUTPUT

Enter two number: 3 8
Total: 11

Explanation

यहाँ पर हम दो class “first ” और “second” declare करते हैं, जहाँ हम पहली class के member (int a ) को दूसरी class से (पहली class के object obj1 से) access कर रहे हैं।

a Friend function can friend more than one class

एक friend function एक से अधिक class का friend हो सकता है। ऐसी स्थिति में, हमें उस अन्य class का forward declaration जिसका यह friend है।

इसमें, दोनों class को friend function के parameter होते हैं जिसे दोनों class में, कहीं भी (private या public में ) declare किया जा सकता है –

friend return-type function_name(first-class,second-class);

और function definition में दोनों class के object भी declare किये जायेंगे –

return-type function_name(first-class obj1, second-class ob2)
  {
    ..............
    ..............
  };

इसका syntax नीचे दिया गया है, जहाँ पहली class में function को private और दूसरी class में public में declare किया गया है-

class second; // forward declaration
class first
  {
     data member;
     friend return type function_name(first, second); //private mode
   public:
      data member
      member function;
  };

class second
  {
     data member;
     member function;
   public:
     data member;
     member function;
     friend return type function_name(first, second); // public mode
  };

ध्यान रहे, दोनों class में declare दोनों friend function के नाम एक जैसे होंगे जैसे नीचे program में , void friend show_sum(first, second) एक friend function है –

class second; // forward declaration

class first
 {
     int a;
     void friend show_sum(first, second); // declared in private
   public:
      get_num(int x) { 
                  statement;
                  }
 };

class second
 {
     int b;
   public:
     void get_num(int y) { 
                 statement;
            }
    void friend show_sum(first, second); // declared in public
 };

इसी syntax के अनुसार इसका program नीचे दिया गया है-

#include<iostream.h>
#include<conio.h>
#include<stdio.h>

 class second; // forward declaration

 class first
   {
      int a;
      void friend show_sum(first,second);       // friend function declaration in private mode
    public:
      void get_num(int x)
        {
           a = x; 
        }
   };            // first class terminate here

 class second
   {
      int b;
     public:
      void get_num(int y)
        {
           b = y; 
        }
      void friend show_sum(first,second);          //friend declaration in public mode
   };              // second terminate here

 // friend function definition out of class without ::
void show_sum(first obj1 , second obj2)         
  {
     int sum;
     sum = obj1.a + obj2.b;         // accessig private member of classes
     cout<<"Total: "<<sum;
  } 

void main()         // main function start here
{
   int a,b;
   clrscr();

   first obj1;
   second obj2;

   cout<<"Enter two number: ";
   cin>>a>>b;

   obj1.get_num(a);           // first class function call
   obj2.get_num(b);           // second class function call
   show_sum(obj1,obj2);        // friend function call

   getch();
}

OUTPUT

Enter two number: 5 6
Total: 11

Previous- Friend Function in C++
next- constructor in C++


Leave a Reply

Your email address will not be published. Required fields are marked *