“हेलो दोस्तों! इस पोस्ट में ‘C++ Programming’ में Friend classes का परिचय, Friend functions का उपयोग और उदाहरण और Friend Class and Function in C++ के बारे में सीखेंगे। साथ ही, आइए इनको विस्तार से समझते हैं।
Friend Classes और Friend Functions का परिचय
C++ में, Friend Class और Friend Function का उपयोग विशेष परिस्थितियों में किया जाता है, जब किसी क्लास के private
या protected
मेंबर्स को दूसरी क्लास या फंक्शन से एक्सेस करना आवश्यक हो। मतौर पर private
और protected
members को केवल उनकी खुद की class के अंदर ही access किया जा सकता है, लेकिन friend keyword का उपयोग करके हम किसी विशेष क्लास या फंक्शन को इन मेंबर्स तक विशेष पहुंच प्रदान कर सकते हैं।
Friend Function का उपयोग और उदाहरण
Example:-
cpp
#include <iostream>
using namespace std;
class Box {
private:
int length;
public:
Box() : length(0) {}
// friend function declaration
friend int getLength(Box b);
};
// friend function definition
int getLength(Box b) {
return b.length;
}
int main() {
Box box;
cout << "लंबाई: " << getLength(box) << endl; // friend function का उपयोग करके private member तक पहुंच
return 0;
}
Output:- लंबाई: 0
यहाँ getLength
फंक्शन Box
क्लास का friend है, इसलिए यह length
प्राइवेट मेंबर को एक्सेस कर सकता है।
Friend Class का उपयोग और उदाहरण
Friend Class एक ऐसी क्लास होती है जिसे किसी दूसरी क्लास के friend के रूप में घोषित किया गया होता है। Friend Class उस क्लास के सभी private
और protected
मेंबर्स को सीधे एक्सेस कर सकती है। इसका उपयोग तब किया जाता है जब दो क्लासेस के बीच गहरा संबंध होता है और किसी एक क्लास को दूसरी क्लास के प्राइवेट मेंबर्स तक पहुंच की आवश्यकता होती है।
उदाहरण:
#include <iostream>
using namespace std;
class Engine {
private:
int horsepower;
public:
Engine(int hp) : horsepower(hp) {}
// Car class को friend declare कर दिया गया है
friend class Car;
};
class Car {
public:
void displayHorsepower(Engine e) {
cout << "कार की हॉर्सपावर: " << e.horsepower << endl;
}
};
int main() {
Engine engine(250);
Car car;
car.displayHorsepower(engine); // friend class का उपयोग करके private member तक पहुंच
return 0;
}
Output:- कार की हॉर्सपावर: 250
इस उदाहरण में, Car
क्लास को Engine
क्लास का friend घोषित किया गया है, जिससे Car
क्लास Engine
क्लास के horsepower
प्राइवेट मेंबर को सीधे एक्सेस कर सकती है।
People Also Ask
1. Friend Class क्या होती है?
- उत्तर: Friend class:- जिसे किसी अन्य class के private और protected members तक पहुंच की अनुमति दी जाती है। जब एक class दूसरी class की friend के रूप में declare की जाती है, तो उस class के सभी private और protected को access करने का power मिल जाता है। इसका use तब किया जाता है जब हमें 2 classes के बीच निकटता से data साझा करने की आवश्यकता होती है।
2. Friend Function क्या होता है?
- उत्तर: Friend function:- जिसे किसी class के Private और Protected members तक पहुँच की अनुमति होती है, भले ही वह function उस class का member न हो। इसे function के declaration से पहले friend keywords जोड़कर define किया जाता है। Friend function का उपयोग तब किया जाता है जब किसी function को class के डेटा को एक्सेस करना हो, लेकिन उसे class का सदस्य न बनाना हो।
3. Friend Function का Syntax क्या होता है?
- उत्तर:
class ClassName {
friend ReturnType FunctionName(Parameters); // Friend function declaration
};
Friend Class का उपयोग कैसे करते हैं?
- उत्तर: Friend class को एक class के अंदर
friend
Keyword का उपयोग करके declare किया जाता है। इससे friend class उस class के private member और protected members तक पहुंच बना सकती है।
6. क्या Friend Function को OOP के encapsulation concept का उल्लंघन माना जाता है?
- उत्तर: हाँ, friend function OOP के encapsulation concept का उल्लंघन कर सकता है, क्योंकि यह class के private और protected डेटा को एक्सेस करने की अनुमति देता है। लेकिन इसका उपयोग उचित रूप से तब किया जाता है जब दो classes के बीच tight coupling की आवश्यकता होती है और अन्य कोई विकल्प नहीं होता।
7. Friend Function को Static क्यों नहीं बनाया जा सकता?
- उत्तर: Friend function को static नहीं बनाया जा सकता क्योंकि यह class का member नहीं होता है। Friend function को class के instance के आधार पर call किया जाता है और यह object-specific होता है, जबकि static function class-level का होता है और उसे object-specific बनाने की आवश्यकता नहीं होती।
8. Friend Function के क्या लाभ हैं?
- उत्तर:
- Friend function से दो classes के बीच विशेष Data Sharing की अनुमति मिलती है।
- Friend function का उपयोग operator overloading में किया जा सकता है, जहाँ एक या एक से अधिक classes के private डेटा को Access करना आवश्यक होता है।
9. क्या Friend Function का उपयोग Limit करना चाहिए?
- उत्तर: हाँ, friend function का उपयोग सावधानीपूर्वक करना चाहिए क्योंकि यह class की encapsulation को तोड़ता है। Friend function का अत्यधिक उपयोग डेटा को असुरक्षित बना सकता है, जिससे bugs और unexpected behaviours हो सकते हैं। इसे केवल उन्हीं जगहों पर उपयोग किया जाना चाहिए, जहाँ यह आवश्यक हो।
10. क्या Friend Class का उपयोग Inheritance में किया जा सकता है?
- उत्तर: Friend class का उपयोग inheritance के साथ नहीं किया जा सकता, क्योंकि friend relationship class के inheritance के साथ नहीं बढ़ता है। Friend relationship class की विशेषता होती है और यह inherited class तक नहीं पहुँचती है।