2011-03-05 12 views
9

मेरे पास दो वर्ग हैं जो एक पहलू में कसकर काम करते हैं। वे दोनों एक-दूसरे की कार्यक्षमता का उपयोग करते हैं जिनका उपयोग केवल उनके द्वारा किया जाना चाहिए, न कि किसी अन्य वर्ग द्वारा।सी ++: गेटर्स/सेटर्स लिखने के बजाय मित्र वर्गों का उपयोग करने के लिए खराब अभ्यास?

  • क्या यह खराब अभ्यास है यदि मैं उन दो वर्ग मित्रों को बना देता हूं ताकि वे किसी भी गेटर/सेटर फ़ंक्शंस का उपयोग किए बिना सीधे एक दूसरे के सदस्य चर का उपयोग और कुशलतापूर्वक उपयोग कर सकें?
+1

गेटर्स/सेटर्स के बारे में इसे पढ़ें: http://www.idinews.com/quasiClass.pdf। दो वाक्यों में: 1.) वे ओओ पर घृणित हैं। 2) यदि आपको उनकी आवश्यकता है, तो आपको पुनर्विचार करने की आवश्यकता है। – sbi

+0

देखें http://www.parashift.com/c++-faq-lite/friends.html#faq-14.2 – ildjarn

+0

@ildjarn कि लिंक काम नहीं करता है। –

उत्तर

10

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

यदि एक वर्ग के कार्यान्वयन को बदलने का अर्थ है कि आपको दूसरे के कार्यान्वयन को बदलना होगा, तो यह निश्चित रूप से लागू होगा। विशेष रूप से यदि आपको इन दोनों के बीच इंटरफ़ेस तत्वों की आवश्यकता है जो सार्वजनिक होने पर लागू नहीं होते हैं।

मित्र वर्ग एक कारण के लिए मौजूद हैं।

16

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