अनुशंसित, 2019

संपादक की पसंद

फ्रेंड फंक्शन और फ्रेंड क्लास के बीच अंतर

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

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

यह मित्र सुविधा न तो सराहनीय है और न ही सकर्मक । X, Y का मित्र नहीं है, Y, X का मित्र भी है। यदि X, Y का मित्र है और Y, Z का मित्र है, तो इसका अर्थ यह नहीं है कि X, Z का मित्र है।

तुलना चार्ट

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

फ्रेंड फंक्शन की परिभाषा

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

फ्रेंड फंक्शन को क्लास की एक इनवोकिंग ऑब्जेक्ट नहीं कहा जाता है। मित्र फ़ंक्शन के उदाहरण हैं: एक वैश्विक फ़ंक्शन, किसी वर्ग का सदस्य फ़ंक्शन, फ़ंक्शन टेम्पलेट एक मित्र फ़ंक्शन हो सकता है। आइए इसे एक उदाहरण की मदद से समझते हैं।

 # नामस्थान std का उपयोग करके हटा दें; कक्षा पहली {int डेटा; सार्वजनिक: पहला (इंट i): डेटा (i) {} मित्र शून्य प्रदर्शन (पहला और पहला भाग); }; शून्य प्रदर्शन (पहला और ए) {cout << "डेटा =" < 

फ्रेंड क्लास की परिभाषा

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

मित्र वर्ग को एक से अधिक कक्षाओं में घोषित किया जा सकता है। इसे फ्रेंड फंक्शन के लिए एक छोटा वैकल्पिक तरीका माना जाता है क्योंकि इसकी मदद से हम एक फ्रेंड क्लास बना सकते हैं जो कई फ्रेंड फंक्शन बनाने के बजाय पूरे डेटा मेंबर और फंक्शन को एक्सेस कर सकता है।

 # नामस्थान std का उपयोग करके हटा दें; कक्षा प्रथम {// एक मित्र को घोषित करें कक्षा मित्र को दूसरा; सार्वजनिक: पहला (): a (0) {} शून्य प्रिंट () {cout << "परिणाम" << एक << एंडल है; } निजी: int a; }; वर्ग दूसरा {सार्वजनिक: शून्य परिवर्तन (प्रथम और yclass, int x) {yclass.a = x; }}; int main () // आउटपुट 0 है परिणाम 5 है 

फ्रेंड फंक्शन और फ्रेंड क्लास के बीच मुख्य अंतर

  1. फ्रेंड फंक्शन एक ऐसा फंक्शन है जो किसी वर्ग के निजी और संरक्षित सदस्यों तक पहुंचने में सक्षम है। इसके विपरीत, एक मित्र वर्ग एक ऐसा वर्ग है जो किसी कक्षा के निजी सदस्यों तक पहुँचने में मदद करता है।
  2. कक्षा के अंदर इसके प्रोटोटाइप को शामिल करके एक मित्र फ़ंक्शन घोषित किया जाता है, इसे कीवर्ड मित्र के साथ एंटीकेड करें। इसी तरह, कीवर्ड मित्र का उपयोग करके एक मित्र वर्ग भी परिभाषित किया गया है।
  3. फॉरवर्ड डिक्लेरेशन का उपयोग फ्रेंड फंक्शन के मामले में किया जाता है, जबकि फ्रेंड क्लास में इसका इस्तेमाल करना जरूरी नहीं है।

निष्कर्ष

जब किसी फ़ंक्शन को दो या अधिक स्वतंत्र वर्गों, आंतरिक सदस्यों तक पहुंचने की आवश्यकता होती है, तो एक मित्र फ़ंक्शन की आवश्यकता होती है। दूसरी ओर, एक मित्र वर्ग की आवश्यकता तब होती है जब एक वर्ग को दूसरे वर्ग के सदस्यों तक पहुँचने की आवश्यकता होती है। जब कई सदस्य फ़ंक्शन को उस फ़ंक्शन का मित्र होना चाहिए, तो उस स्थिति में, मित्र वर्ग का उपयोग करना बेहतर होता है।

Top