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

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


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

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

किसी फंक्शन को क्लास के फ्रेंड के रूप में घोषित करने के लिए, क्लास डेफिनिशन में फंक्शन प्रोटोटाइप से पहले कीवर्ड फ्रेंड के साथ इस प्रकार -

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

कक्षा दो के सभी सदस्य कार्यों को कक्षा एक के मित्र के रूप में घोषित करने के लिए, निम्नलिखित घोषणा को कक्षा एक की परिभाषा में रखें

उदाहरण

friend class ClassTwo;  
For example,

#include <iostream>
using namespace std;
class Box {
   double width;
   public:
   friend void printWidth( Box box );
   void setWidth( double wid );
};

// Member function definition
void Box::setWidth( double wid ) {
   width = wid;
}

// Note: printWidth() is not a member function of any class.
void printWidth( Box box ) {
   /* Because printWidth() is a friend of Box, it can
   directly access any member of this class */
   cout << "Width of box : " << box.width <<endl;
}

// Main function for the program
int main() {
   Box box;

   // set box width without member function
   box.setWidth(10.0);

   // Use friend function to print the wdith.
   printWidth( box );

   return 0;
}

आउटपुट

यह आउटपुट देगा -

Width of box: 10

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


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

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

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

    तीर फ़ंक्शन का उपयोग ऑब्जेक्ट विधि के रूप में नहीं किया जाना चाहिए क्योंकि एक तीर फ़ंक्शन का अपना यह नहीं होता है। यह संलग्न लेक्सिकल स्कोप का यह मान लेता है जो ऑब्जेक्ट के बजाय विंडो ऑब्जेक्ट है। यह समस्याएँ पैदा कर सकता है क्योंकि अब हम इच्छित वस्तु के बजाय विंडो ऑब्जेक्ट गुणों को घेरेंगे और उन तक

  1. एचडीएमआई स्प्लिटर्स बनाम स्विच:आपको उनका उपयोग कब करना चाहिए?

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