BCA / B.Tech 10 min read

Friend Function in Hindi

Friend Function in C++ in  Hindi | C++ में फ्रेंड फ़ंक्शन हिंदी में :


C++ में फ्रेंड फ़ंक्शन एक ऐसी विशेषता है जो प्रोग्रामिंग में महत्वपूर्ण भूमिका निभाती है, खासकर जब हम डेटा की सुरक्षा (Encapsulation) के सिद्धांत का पालन करते हुए किसी क्लास के निजी (private) और 
संरक्षित (protected) डेटा को एक्सेस करना चाहते हैं। फ्रेंड फ़ंक्शन का उपयोग करके हम किसी बाहरी फ़ंक्शन या क्लास को किसी अन्य क्लास के निजी और संरक्षित डेटा को एक्सेस करने की अनुमति दे सकते हैं।

इस लेख में हम C++ में फ्रेंड फ़ंक्शन क्या है, इसके उपयोग, विशेषताएँ, उदाहरण, और इसके लाभ और हानियों के बारे में विस्तार से चर्चा करेंगे।

फ्रेंड फ़ंक्शन क्या है? (What is a Friend Function?)

C++ में फ्रेंड फ़ंक्शन वह फ़ंक्शन होता है जिसे किसी क्लास में friend कीवर्ड के साथ डिक्लेयर किया जाता है। यह फ़ंक्शन उस क्लास का हिस्सा नहीं होता, लेकिन इसे उस क्लास के निजी (private) और संरक्षित (protected) डेटा को एक्सेस करने की अनुमति होती है। हालांकि यह क्लास का सदस्य फ़ंक्शन नहीं होता, लेकिन इसे विशेषाधिकार दिए जाते हैं ताकि यह क्लास के अंदरूनी डेटा का उपयोग कर सके।

फ्रेंड फ़ंक्शन को क्लास के बाहर डिफाइन किया जाता है, लेकिन इसे उस क्लास में घोषित किया जाना अनिवार्य होता है जिसमें इसे फ्रेंड के रूप में उपयोग करना होता है।

Key Features of Friend Function in C++ in  Hindi |  फ्रेंड फ़ंक्शन की मुख्य विशेषताएँ :

सदस्य फ़ंक्शन नहीं: फ्रेंड फ़ंक्शन किसी क्लास का सदस्य फ़ंक्शन नहीं होता, फिर भी इसे क्लास के निजी और संरक्षित सदस्यों तक पहुँच प्राप्त होती है।

क्लास के बाहर परिभाषित (Defined Outside the Class): फ्रेंड फ़ंक्शन को क्लास के बाहर परिभाषित किया जाता है।
किसी भी क्लास से फ्रेंडशिप: कोई भी क्लास किसी बाहरी फ़ंक्शन या दूसरी क्लास को फ्रेंड बना सकती है।
किसी भी प्रकार की सदस्यता नहीं: फ्रेंड फ़ंक्शन को एक क्लास की सदस्यता की आवश्यकता नहीं होती, इसलिए इसे सीधे उस क्लास के माध्यम से कॉल नहीं किया जा सकता।

Need for Friend Function in C++ in Hindi | फ्रेंड फ़ंक्शन की आवश्यकता :

फ्रेंड फ़ंक्शन की आवश्यकता तब होती है जब:

डेटा की सुरक्षा: C++ में डेटा सुरक्षा के सिद्धांत के अनुसार, प्राइवेट और प्रोटेक्टेड डेटा को सीधे क्लास के बाहर एक्सेस नहीं किया जा सकता। लेकिन कुछ परिस्थितियों में यह आवश्यक हो सकता है कि बाहरी फ़ंक्शन उस डेटा तक पहुँच सके, तब फ्रेंड फ़ंक्शन का उपयोग किया जाता है।
कई क्लासों के बीच डेटा एक्सेस: जब हमें दो या दो से अधिक क्लासों के बीच डेटा साझा करना हो और हम उन क्लासों के डेटा को एक-दूसरे से एक्सेस कराना चाहते हों।
ऑपरेटर ओवरलोडिंग (Operator Overloading): फ्रेंड फ़ंक्शन का उपयोग प्रायः ऑपरेटर ओवरलोडिंग के लिए भी किया जाता है, खासकर जब हमें बाइनरी ऑपरेटरों को ओवरलोड करना हो।

Example of Friend Function in C++ in  Hindi | फ्रेंड फ़ंक्शन का उदाहरण : 

#include <iostream>
using namespace std;

class Box {
private:
    int length;

public:
    Box() : length(0) {}  // Constructor to initialize length

    // friend function declaration
    friend int getLength(Box);
};

// Friend function definition
int getLength(Box b) {
    return b.length;  // Accessing private data member
}

int main() {
    Box b;
    cout << "Length of box: " << getLength(b) << endl;
    return 0;
}

इस उदाहरण में:

हमने Box नाम की एक क्लास बनाई है, जिसमें length एक प्राइवेट डेटा सदस्य है।
getLength() एक फ्रेंड फ़ंक्शन है जिसे Box क्लास के अंदर घोषित किया गया है, लेकिन इसे क्लास के बाहर परिभाषित किया गया है।
फ्रेंड फ़ंक्शन होने के कारण, getLength() फ़ंक्शन क्लास के प्राइवेट डेटा सदस्य length को एक्सेस कर सकता है।

Advantages of Friend Function in C++ in Hindi | फ्रेंड फ़ंक्शन के लाभ :

निजी डेटा का एक्सेस: फ्रेंड फ़ंक्शन को किसी क्लास के निजी और संरक्षित डेटा तक पहुँचने की अनुमति होती है, जिससे यह फ़ंक्शन विशेष स्थितियों में उपयोगी हो जाता है।

क्लास के बाहर से कार्यान्वयन (External Implementation): फ्रेंड फ़ंक्शन को क्लास के बाहर से परिभाषित और उपयोग किया जा सकता है, जिससे इसे कई क्लासों के साथ काम करने में आसानी होती है।

ऑपरेटर ओवरलोडिंग: फ्रेंड फ़ंक्शन का उपयोग बाइनरी ऑपरेटरों (जैसे +, -, *, / आदि) को ओवरलोड करने में मदद करता है, खासकर जब हमें किसी भी दो ऑब्जेक्ट के बीच तुलना करनी हो।

मल्टी-क्लास एक्सेस (Multi-Class Access): फ्रेंड फ़ंक्शन को एक से अधिक क्लास के साथ फ्रेंडशिप दी जा सकती है, जिससे यह कई क्लासों के बीच डेटा एक्सेस करने में सहायक होता है।

Disadvantages of Friend Function in C++ in Hindi |  फ्रेंड फ़ंक्शन के नुकसान :

डेटा की सुरक्षा में कमी: फ्रेंड फ़ंक्शन डेटा एब्स्ट्रैक्शन के सिद्धांत का उल्लंघन करता है। इसे निजी और संरक्षित डेटा तक पहुँचने की अनुमति होती है, जो कि एंकैप्सुलेशन के सिद्धांत को कमजोर करता है।

जटिलता (Complexity): जब फ्रेंड फ़ंक्शन का बहुत अधिक उपयोग किया जाता है, तो कोड जटिल हो सकता है और इसे समझना कठिन हो सकता है, क्योंकि कई स्थानों से डेटा एक्सेस हो रहा होता है।

सदस्य फ़ंक्शन नहीं: चूंकि फ्रेंड फ़ंक्शन क्लास का सदस्य फ़ंक्शन नहीं होता, इसलिए इसे उस क्लास के ऑब्जेक्ट्स के माध्यम से नहीं बुलाया जा सकता, जो इसे किसी क्लास के अंदरूनी संचालन से अलग रखता है।

फ्रेंड क्लास (Friend Class)

C++ में फ्रेंडशिप केवल फ़ंक्शन्स तक ही सीमित नहीं है। किसी क्लास को भी फ्रेंड के रूप में घोषित किया जा सकता है। इसका मतलब है कि अगर कोई क्लास किसी अन्य क्लास को फ्रेंड बना देती है, तो वह क्लास उसके सभी प्राइवेट और प्रोटेक्टेड सदस्यों तक पहुँच सकती है।

फ्रेंड क्लास का उदाहरण (Example of Friend Class):

#include <iostream>
using namespace std;

class B;  // Forward declaration

class A {
private:
    int x;

public:
    A() : x(10) {}  // Constructor
    friend class B;  // Declaring class B as friend
};

class B {
public:
    void display(A& obj) {
        cout << "Value of x: " << obj.x << endl;  // Accessing private member of class A
    }
};

int main() {
    A a;
    B b;
    b.display(a);
    return 0;
}

इस उदाहरण में:

हमने A और B नाम की दो क्लास बनाई हैं।
B को A का फ्रेंड बनाया गया है, इसलिए B क्लास A के प्राइवेट सदस्य x को एक्सेस कर सकती है।