Introduction
Object Oriented Programming में data को सामान्यतः private रखा जाता है ताकि उसे सीधे class के बाहर से access न किया जा सके। लेकिन कुछ परिस्थितियों में यह आवश्यक हो जाता है कि कोई external function या दूसरी class उस private data को access कर सके।
इसी स्थिति को संभालने के लिए C++ में friend concept का उपयोग किया जाता है। Friend functions और friend classes को class के private और protected members को access करने की अनुमति दी जाती है, जिससे controlled access संभव हो पाता है।
Definition
Friend Function
Friend function वह function होता है जो class का member नहीं होता, लेकिन उसे class के private और protected members को access करने की अनुमति दी जाती है।
Friend Class
Friend class वह class होती है जिसके सभी member functions को किसी दूसरी class के private और protected members को access करने की अनुमति दी जाती है।
Friend Function का Syntax
class ClassName {
private:
int data;public:
friend void functionName(ClassName obj);
};
Friend Function का उदाहरण
#include <iostream>
using namespace std;
class Demo {
private:
int value;
public:
Demo() {
value = 10;
}
friend void show(Demo d);
};
void show(Demo d) {
cout << "Value: " << d.value;
}
int main() {
Demo d1;
show(d1);
return 0;
}
Output:
Value: 10
Working को समझना
show()class का member नहीं है- फिर भी यह private member
valueको access कर रहा है - क्योंकि इसे
friendkeyword के साथ declare किया गया है
Friend Class का Syntax
class A {
private:
int x;
friend class B;
};
Friend Class का उदाहरण
#include <iostream>
using namespace std;
class A {
private:
int data;
public:
A() {
data = 50;
} friend class B;
};
class B {
public:
void show(A obj) {
cout << "Data: " << obj.data;
}
};
int main() {
A a1;
B b1;
b1.show(a1);
return 0;
}
Output:
Data: 50
Friend Function और Friend Class में अंतर
| आधार | Friend Function | Friend Class |
|---|---|---|
| प्रकार | Function | Class |
| Access | Specific function | पूरी class |
| Scope | Limited | व्यापक |
| Use | Specific task | Multiple operations |
Important Points
- Friend function class का member नहीं होता
- Friend class के सभी functions को access मिलता है
- Friend declaration class के अंदर किया जाता है
- यह encapsulation को break करता है, इसलिए सावधानी से उपयोग करना चाहिए
निष्कर्ष
Friend functions और friend classes C++ में controlled access प्रदान करते हैं, जिससे private data को आवश्यकतानुसार access किया जा सकता है। यह flexibility देता है, लेकिन इसका उपयोग सोच-समझकर करना चाहिए ताकि data security प्रभावित न हो।