BCA / B.Tech 12 min read

Friend Class in Hindi

Friend Class in C++ in Hindi | फ्रेंड क्लास हिंदी में  :


  • C++ में फ्रेंड क्लास एक विशेष प्रकार की क्लास होती है, जिसे दूसरी क्लास की निजी (private) और संरक्षित (protected) सदस्यों तक पहुंचने की अनुमति दी जाती है। 
  • सामान्यतः, C++ की ओब्जेक्ट ओरिएंटेड प्रोग्रामिंग  के नियमों के अनुसार, एक क्लास के प्राइवेट और प्रोटेक्टेड मेंबर्स केवल उसी क्लास के मेंबर फंक्शन्स द्वारा एक्सेस किए जा सकते हैं। लेकिन कभी-कभी, हमें दो क्लासों के बीच विशेष जानकारी साझा करने की आवश्यकता होती है, 
  • जहाँ एक क्लास दूसरी क्लास के निजी  सदस्यों तक पहुंच सके। इस स्थिति में, फ्रेंड क्लास का उपयोग किया जाता है।
  • फ्रेंड क्लास का उपयोग C++ में तब किया जाता है जब दो क्लासेस के बीच डेटा साझा करने की आवश्यकता होती है। फ्रेंड क्लास एक उपयोगी फीचर है, जो हमें प्राइवेट और प्रोटेक्टेड मेंबर्स तक पहुंचने की अनुमति देता है। 
  • हालांकि,  इसका अत्यधिक उपयोग एनकैप्सुलेशन के सिद्धांत का उल्लंघन कर सकता है, इसलिए इसे सावधानी से उपयोग किया जाना चाहिए। फ्रेंड क्लास का सही उपयोग करने से हम कोड को सरल बना सकते हैं और क्लासेस के बीच जटिल संबंधों को बेहतर तरीके से प्रबंधित कर सकते हैं।
फ्रेंड क्लास क्या है? (What is a Friend Class?)

  • एक फ्रेंड क्लास वह क्लास होती है जिसे किसी दूसरी क्लास के निजी (private) और संरक्षित (protected) सदस्यों तक पहुंचने की अनुमति दी जाती है। 
  • सामान्य तौर पर, कोई भी क्लास केवल अपने ही सदस्यों (मेंबर वेरिएबल्स और फंक्शन्स) को एक्सेस कर सकती है, लेकिन फ्रेंड क्लास के माध्यम से एक क्लास दूसरी क्लास के प्राइवेट और प्रोटेक्टेड डेटा में भी सीधे पहुंच सकती है।
  • एक फ्रेंड क्लास को डिक्लेयर करते समय हम एक क्लास के भीतर यह निर्दिष्ट करते हैं कि कौन सी क्लास उसकी फ्रेंड होगी। जब कोई क्लास किसी दूसरी क्लास की फ्रेंड बनती है, तो वह उस क्लास के सभी प्राइवेट और प्रोटेक्टेड मेंबर्स को एक्सेस कर सकती है।
Declaration of Friend Class in C++ in Hindi | फ्रेंड क्लास का डिक्लेरेशन :

फ्रेंड क्लास को डिक्लेयर करना बहुत आसान है। एक क्लास के अंदर friend कीवर्ड का उपयोग करके दूसरी क्लास को फ्रेंड क्लास के रूप में घोषित किया जाता है। उदाहरण के लिए:

class B;  // Forward declaration of class B

class A {
private:
    int x;

public:
    A() : x(10) {}

    // Declaring class B as a friend
    friend class B;
};

class B {
public:
    void display(A& obj) {
        // Accessing private member of class A
        cout << "Value of x in class A: " << obj.x << endl;
    }
};
इस उदाहरण में, class B को class A के अंदर friend कीवर्ड के साथ घोषित किया गया है। इसका मतलब यह है कि class B को class A के प्राइवेट और प्रोटेक्टेड मेंबर्स तक पहुंचने की अनुमति है। class B का display() फंक्शन class A के x मेंबर को एक्सेस कर सकता है, भले ही वह प्राइवेट है।

Advantages of Friend Class in C++ in Hindi | फ्रेंड क्लास के फायदे :

  • दो क्लासों के बीच मजबूत संबंध (Strong Relationship Between Classes): फ्रेंड क्लास के उपयोग से दो क्लासों के बीच एक मजबूत संबंध स्थापित किया जा सकता है। यह तब उपयोगी होता है जब हमें दो क्लासों के बीच डेटा साझा करने की आवश्यकता होती है।
  • स्पेशलाइज्ड ऑपरेशन्स (Specialized Operations): फ्रेंड क्लास का उपयोग करके हम ऐसी परिस्थितियों में भी विशेष ऑपरेशन्स कर सकते हैं, जहाँ हमें किसी दूसरी क्लास के निजी सदस्यों को एक्सेस करना होता है। इससे हमें क्लास के डेटा पर डायरेक्ट नियंत्रण मिलता है।
  • एनकैप्सुलेशन में फ्लेक्सिबिलिटी (Flexibility in Encapsulation): फ्रेंड क्लास का उपयोग करने से एनकैप्सुलेशन का उल्लंघन किए बिना डेटा तक पहुंचने में मदद मिलती है। एक फ्रेंड क्लास प्राइवेट डेटा तक पहुंच सकता है, लेकिन यह एक्सेस कंट्रोल को पूरी तरह से नहीं हटाता, क्योंकि यह एक्सेस केवल फ्रेंड क्लास तक सीमित रहता है।

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

  • एनकैप्सुलेशन का आंशिक हनन (Partial Violation of Encapsulation): फ्रेंड क्लास का उपयोग एनकैप्सुलेशन सिद्धांत का आंशिक हनन करता है, क्योंकि इसका उपयोग करके हम क्लास के निजी सदस्यों को एक्सेस कर सकते हैं, जो सामान्यतः बाहर की क्लासेस या फंक्शन्स से छुपाए जाते हैं। इससे डेटा की सुरक्षा कम हो सकती है।
  • कोड की जटिलता (Increased Complexity): फ्रेंड क्लास का अत्यधिक उपयोग कोड को जटिल बना सकता है। जब एक क्लास दूसरी क्लास के निजी डेटा तक पहुंच सकती है, तो कोड के विभिन्न हिस्सों में परिवर्तन करना कठिन हो सकता है।
  • रखरखाव में कठिनाई (Difficulty in Maintenance): फ्रेंड क्लास का उपयोग करने से कोड का रखरखाव कठिन हो सकता है, क्योंकि कई क्लासेस एक-दूसरे के निजी सदस्यों पर निर्भर हो सकती हैं। इससे भविष्य में बदलाव और डिबगिंग अधिक कठिन हो सकती है।

Use of Friend Class in C++ in Hindi | फ्रेंड क्लास का उपयोग :

  • फ्रेंड क्लास का उपयोग विशेष परिस्थितियों में किया जाता है, जहाँ हमें दो या अधिक क्लासों के बीच निकट संबंध बनाने की आवश्यकता होती है। यह तब उपयोगी होता है जब:
  • क्लासेस के बीच सहयोग (Collaboration Between Classes): जब दो क्लासेस के बीच गहरा सहयोग हो, तो फ्रेंड क्लास का उपयोग डेटा साझा करने और ऑपरेशन्स को सरल बनाने के लिए किया जाता है।
  • डाटा स्ट्रक्चर में मदद (Helps in Data Structures): फ्रेंड क्लास का उपयोग जटिल डेटा स्ट्रक्चर में किया जा सकता है, जैसे लिंक्ड लिस्ट, ट्री, या ग्राफ, जहाँ कई क्लासेस को एक-दूसरे के डेटा तक पहुंचने की आवश्यकता होती है।

Example of Friend Class in C++ in Hindi | फ्रेंड क्लास के उदाहरण :

उदाहरण 1: फ्रेंड क्लास का सरल उदाहरण

#include<iostream>
using namespace std;

class B;  // Forward declaration of class B

class A {
private:
    int x;

public:
    A() : x(10) {}

    // Declaring class B as a friend
    friend class B;
};

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

int main() {
    A a;
    B b;
    b.show(a);  // B accessing private member of A
    return 0;
}

आउटपुट:

Private member of class A: 10
इस उदाहरण में, class B को class A के निजी सदस्य x तक पहुंचने की अनुमति दी गई है। class B का show() फंक्शन class A के प्राइवेट मेंबर को एक्सेस कर रहा है।

उदाहरण 2: फ्रेंड क्लास के साथ कई निजी सदस्यों का एक्सेस

#include<iostream>
using namespace std;

class Rectangle;  // Forward declaration of class Rectangle

class Dimensions {
private:
    int length, width;

public:
    Dimensions(int l, int w) : length(l), width(w) {}

    // Declaring Rectangle as a friend class
    friend class Rectangle;
};

class Rectangle {
public:
    int calculateArea(Dimensions& dim) {
        // Accessing private members of Dimensions class
        return dim.length * dim.width;
    }
};

int main() {
    Dimensions d(5, 3);
    Rectangle r;

    cout << "Area of Rectangle: " << r.calculateArea(d) << endl;
    return 0;
}

आउटपुट:

Area of Rectangle: 15

इस उदाहरण में, class Rectangle को class Dimensions के प्राइवेट मेंबर्स तक पहुंचने की अनुमति दी गई है। class Rectangle का calculateArea() फंक्शन class Dimensions के प्राइवेट मेंबर्स length और width का उपयोग कर रहा है ताकि आयत का क्षेत्रफल निकाला जा सके।