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 करता है-
चलिए इसे एक program की सहायता से समझते हैं-
लेकिन कुछ शर्तें होती हैं, इसमें पहली class , दूसरी class का friend होता है, लेकिन दूसरी class , पहली class का friend नहीं होता अर्थात केवल पहली class ही दूसरी class के private member को access कर सकता है। एक तरह से कह सकते हैं कि दोस्ती एकतरफा होती है।
चलिए इसे एक 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++