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

C++ में फ्रेंड क्लास और फंक्शन


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

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

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

class Box {
double width;

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

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

friend class ClassTwo;

उदाहरण

#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. C++ में निजी और संरक्षित सदस्य

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

  1. सी ++ में कक्षाएं और वस्तुएं

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

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

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