Friend Function in C++ in hindi

जैसा कि हम जानते हैं कि किसी class के private में declared member को केवल उस class के public members ही access कर सकते हैं है यानी private को class के बाहर से access नहीं किया जा सकता है।

एक friend function से हम किसी class के private member को access कर सकते हैं जबकि यह class का member नहीं होता है।

इसे नीचे diagram में बताया गया है –

friend-function-in-cpp

: ऊपर दिया गया diagram OOPs में एक अपवाद है।

हालांकि, यह एक function होता है जो compiler को बताता है कि वह उस class का friend है जो उस class के private member को access कर सकता है। क्योंकि यह किसी class का member नहीं होता है, इसलिए हम इसे program में कहीं भी (private या public ) declare कर सकते हैं।

friend keyword का प्रयोग करके एक function को, friend function declare किया जाता है-

syntax

friend return-type function-name(class-name);

ऊपर दिए गए syntax में, function parameter में class -name का एक object भी declare किया जाता है.

: friend function किसी class का member नहीं होता है, फिर भी यह class के private member को access कर सकता है। जो C ++ language का एक disadvantage है।

C++ friend function Declaration

ध्यान दें, जिस class का इसे friend बनाना है इसे उस class के अंदर (private या public में कहीं भी ) declare किया जाता है अर्थात friend function declaration का declaration, inside class होता है जबकि definition outside class होता है, जैसे-

class student
 { 
     .........
   public:
     ..........
     void friend show_record(student);
 };

Defining friend function definition

जब हम किसी friend function को defined करते हैं। तो हम friend function के parameter में उस class का एक object भी declare करते हैं। इसी object से, friend function class के private और public , दोनों members को access कर सकता है-

friend-function-program-cpp

 

as you can see in the above, object1 is created by friend function(in the parameter) whereas object2 is created by the class. their scope is different.

Here is a syntax to define a friend function definition-

जैसा कि आप ऊपर देख सकते हैं, object1 friend function (parameter में) द्वारा declare किया गया है जबकि object2 class का मूल object है । यहाँ पर दोनों का scope different होगा ।

किसी friend function की definition का syntax नीचे दिया गया है-

return-type friend-function-name(class-name obj2)
  {
          private-member.obj2;
          public-member.obj2;
  }

How to call friend function in C++?

किसी friend -function को call करने के लिए, हम dot operator (. ) का प्रयोग नहीं करते बल्कि class -object इसमें parameter के रूप में होता है।

एक friend function को call करने का syntax नीचे दिया गया है-

friend_function_name(class-object);

Example

void main() 
  {
    class-name class-obj1;
    friend-function-name(class-obj1);
 }

याद रहे , parameter के रूप में defined object, class -obj1 class का main object है।

इसका program नीचे दिया गया है –

यह program पिछले पृष्ठ के समान ही है जिसमें हमने एक student records (roll _no और name ) store किये हैं। अब इसमें friend function का प्रयोग किया गया है –

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

class student
{
// public member by default
int roll_no;
char name[20];
public:
void get_record(void); //normal member declaration
void friend show_record(student); //friend declaration in public
};

void student:: get_record() //outside definition using scope resolution operator(::)
{
cout<<"Enter roll no: ";
cin>>roll_no;
cout<<"Enter Name : ";
gets(name);
}

void show_record(student obj2) //outside definition of friend function without scope resolution operator(::)
{
cout<<"\nRoll no: "<<obj2.roll_no; // accessing first private member
cout<<"\nName : "<<obj2.name; // accessing second private member
}

void main() // main function start here
{
clrscr();

student obj1;

obj2.get_record(); //normal member calling
show_record(obj1); //friend function calling

getch();
}

OUTPUT

Enter roll no: 11
Enter Name : Rahul sherma
Roll no: 11
Name : Rahul sherma

more about friend function


previous- class and object in C++
next- constructor in C++ in hindi


Leave a Reply

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