Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में 'friend' का उपयोग कब करना चाहिए?


किसी क्लास का फ्रेंड फ़ंक्शन उस क्लास के स्कोप के बाहर परिभाषित होता है लेकिन उसे उस क्लास के सभी प्राइवेट और प्रोटेक्टेड मेंबर्स को एक्सेस करने का अधिकार होता है। भले ही फ्रेंड फ़ंक्शन के प्रोटोटाइप क्लास परिभाषा में दिखाई देते हैं, फ्रेंड मेंबर फ़ंक्शन नहीं होते।

एक फ्रेंड एक फ़ंक्शन, फ़ंक्शन टेम्पलेट, या मेंबर फ़ंक्शन, या एक क्लास या क्लास टेम्पलेट हो सकता है, जिस स्थिति में पूरी क्लास और उसके सभी मेंबर्स फ्रेंड होते हैं।

किसी फ़ंक्शन को क्लास का फ्रेंड घोषित करने के लिए, क्लास परिभाषा में फ़ंक्शन प्रोटोटाइप से पहले कीवर्ड friend लगाएं:

class Box {
    double width;
public:
    double length;
    friend void printWidth(Box box);
    void setWidth(double wid);
};

क्लास ClassTwo के सभी मेंबर फ़ंक्शन को क्लास ClassOne का फ्रेंड घोषित करने के लिए, क्लास ClassOne की परिभाषा में निम्न घोषणा रखें:

उदाहरण

friend class ClassTwo;

// उदाहरण के लिए,
#include <iostream>
using namespace std;

class Box {
    double width;
public:
    friend void printWidth(Box box);
    void setWidth(double wid);
};

// मेंबर फ़ंक्शन परिभाषा
void Box::setWidth(double wid) {
    width = wid;
}

// नोट: printWidth() किसी भी क्लास का मेंबर फ़ंक्शन नहीं है।
void printWidth(Box box) {
    /* क्योंकि printWidth() Box का फ्रेंड है, यह
       सीधे इस क्लास के किसी भी मेंबर को एक्सेस कर सकता है */
    cout << "Width of box: " << box.width << endl;
}

// प्रोग्राम के लिए मुख्य फ़ंक्शन
int main() {
    Box box;
    // मेंबर फ़ंक्शन के बिना बॉक्स की चौड़ाई सेट करें
    box.setWidth(10.0);
    // चौड़ाई प्रिंट करने के लिए फ्रेंड फ़ंक्शन का उपयोग करें
    printWidth(box);
    return 0;
}

आउटपुट

इससे निम्न आउटपुट मिलेगा:

Width of box: 10

भले ही फ़ंक्शन क्लास का मेंबर नहीं था, यह सीधे उस क्लास के मेंबर वेरिएबल्स को एक्सेस कर सकता था। यह कुछ स्थितियों में बहुत उपयोगी हो सकता है।

  1. क्या आपको अपने पीसी पर रेडीबूस्ट का उपयोग करना चाहिए? क्या आपको अपने पीसी पर रेडीबूस्ट का उपयोग करना चाहिए?

    विंडोज 7 की शुरुआत के साथ एक कूल साउंडिंग नई सुविधा आई जिसे रेडीबूस्ट कहा जाता है। यह थोड़ी देर के लिए चर्चा का विषय था कि कैसे आप बस एक यूएसबी ड्राइव प्लग करके अपने कंप्यूटर को तुरंत तेज कर सकते हैं और बम, आपके पास काम करने के लिए अतिरिक्त रैम है! यह सुविधा विंडोज 8 और विंडोज 10 में भी उपलब्ध है। ऐ

  1. JavaScript एरो फंक्शन्स का उपयोग कब नहीं करना चाहिए? JavaScript एरो फंक्शन्स का उपयोग कब नहीं करना चाहिए?

    एरो फंक्शन्स का उपयोग ऑब्जेक्ट मेथड के रूप में नहीं करना चाहिए क्योंकि एरो फंक्शन का अपना this नहीं होता। यह आसपास के लेक्सिकल स्कोप के this मान को लेता है जो विंडो ऑब्जेक्ट होता है, ऑब्जेक्ट स्वयं नहीं। इससे समस्याएं हो सकती हैं क्योंकि अब हम इच्छित ऑब्जेक्ट के बजाय विंडो ऑब्जेक्ट की प्रॉपर्टीज़ से

  1. HDMI स्प्लिटर बनाम स्विच: कब उपयोग करें? HDMI स्प्लिटर बनाम स्विच: कब उपयोग करें?

    इन दिनों हमारा बहुत सारा दृश्य और ऑडियो मनोरंजन HDMI द्वारा संचालित होता है। SCART प्लग या VGA केबल सेट करने के साथ कोई और छेड़छाड़ नहीं; बस एक HDMI केबल को दोनों सिरों पर प्लग करें और आप जाने के लिए तैयार हैं! क्या आप जानते हैं, हालांकि, आप छोटे उपकरण खरीद सकते हैं जो आपको अपने HDMI प्रबंधन पर और भ