मैं इस डिजाइन के फैसले के बारे में उलझन में रहना चाहता हूं, जब मैं प्रोग्राम लिख रहा हूं, लेकिन मुझे 100% यकीन नहीं है जब मुझे एक सदस्य कार्य करने के लिए कार्य करना चाहिए एक वर्ग, इसे एक सामान्य फ़ंक्शन के रूप में छोड़ने के लिए, जिसमें अन्य स्रोत फ़ाइलें फ़ंक्शन को कॉल कर सकती हैं जब फ़ंक्शन घोषणा को हेडर फ़ाइल में प्रकट किया जाता है। क्या किसी वर्ग के सदस्य चर के वांछित पहुंच को अधिकांश समय निर्णय के साथ करना पड़ता है?सी ++ सदस्य कार्य बनाम नि: शुल्क कार्य
उत्तर
इंटरफ़ेस सिद्धांत हर्ब Sutter
द्वारा एक दसवीं कक्षा के लिए, मुफ्त कार्यों सहित सभी काम करता है, यह है कि दोनों
(क) "का उल्लेख" एक्स, और
(ख) "आपूर्ति की जाती है "एक्स
साथ तार्किक, एक्स का हिस्सा हैं, क्योंकि वे एक्स
के इंटरफेस के भाग के लिए गहराई से चर्चा में हर्ब Sutter द्वारा Namespaces and the Interface Principle पढ़ के रूप में।
संपादित
असल में, आप सी को समझने के लिए ++ जाने के लिए और सब कुछ क्या हर्ब Sutter लिखा है :) पढ़ चाहते हैं, तो
आपके उत्तर के लिए धन्यवाद। लिंक काफी वर्णनात्मक है। – stanigator
(+1)। मुझे स्कॉट मेयर्स द्वारा यह भी पसंद है: http://www.ddj.com/cpp/184401197। स्कॉट और हर्ब के लेख एक दूसरे के पूरक हैं, मुझे लगता है। –
मैं उलझन में हूँ। लिंक किया गया आलेख नामस्थानों के बारे में है, लेकिन सवाल नामस्थानों के बारे में नहीं पूछ रहा है। यह पूछ रहा है कि "सदस्य कार्य" बनाम "नि: शुल्क कार्य" कब करें। –
कुछ सदस्य चर या वस्तु का एक उदाहरण के कुछ पहलू का उपयोग करने की जरूरत है, तो इसे एक विधि बनाया जाना चाहिए।
यदि यह कक्षा से निकटता से संबंधित है, लेकिन किसी भी घटना विशिष्ट जानकारी तक पहुंचने की आवश्यकता नहीं है, तो इसे एक प्रोग्रामिंग भाषा के आधार पर साझा फ़ंक्शन (या क्लास फ़ंक्शन, या स्थैतिक फ़ंक्शन बनाया जाना चाहिए))।
भले ही यह केवल एक सामान्य कार्य है, संभावना है कि आपके पास उनमें से एक से अधिक होगा और उन्हें कुछ अवधारणा के अनुसार समेकित/संगठित किया जा सकता है। फिर, आप उस अवधारणा का प्रतिनिधित्व करने वाली कक्षा बना सकते हैं, और उन्हें साझा किए गए कार्यों को बना सकते हैं।
उपरोक्त को देखते हुए, मुझे अब स्टैंडअलोन फ़ंक्शंस बनाने का कोई कारण नहीं दिखता है।
सी ++ में विधियों की कोई अवधारणा नहीं है। –
विधि == सदस्य फ़ंक्शन – PSkocik
जब मुझे राज्य को बनाए रखने की आवश्यकता होती है तो कक्षाओं का उपयोग करता हूं। यदि किसी फ़ंक्शन को बनाए रखा राज्य जानकारी तक पहुंच की आवश्यकता नहीं है, तो मैं एक नि: शुल्क फ़ंक्शन पसंद करता हूं क्योंकि यह परीक्षण और कोड पुन: उपयोग को आसान बनाता है।
यदि मेरे पास संबंधित कार्यक्षमता का एक गुच्छा है लेकिन राज्य को बनाए रखने की आवश्यकता नहीं है, तो मैं नामस्थान में नि: शुल्क फ़ंक्शंस डालना पसंद करता हूं।
- 1. सी ++, नि: शुल्क स्टोर बनाम ढेर
- 2. सी ++ अस्थिर सदस्य कार्य
- 3. सी ++, सी ++ 11, std :: परमाणु सदस्य कार्य
- 4. गैर-सदस्य गैर-मित्र कार्य बनाम निजी कार्य
- 5. सी ++ प्वाइंटर्स सदस्य कार्य विरासत
- 6. Telerik नि: शुल्क परीक्षण फ्रेमवर्क बनाम सेलेनियम
- 7. सदस्य समारोह बनाम गैर-कार्य समारोह?
- 8. अंतर विफल कार्य बनाम कार्य
- 9. जो बेहतर है: नि: शुल्क या नि: शुल्क और नील?
- 10. ईसी 2 नि: शुल्क उदाहरणों को नि: शुल्क
- 11. लगातार सदस्य कार्य
- 12. नि: शुल्क स्रोत नियंत्रण
- 13. नि: शुल्क जावास्क्रिप्ट शतरंज
- 14. नि: शुल्क नेटवर्क मॉनिटर
- 15. नि: शुल्क वेक्टर आइकन
- 16. कार्य बनाम थ्रेडपूल
- 17. नि: शुल्क ऑपरेटर हैं -> * बुराई अधिभार?
- 18. नि: शुल्क एसएमएस गेटवे इंजन
- 19. नि: शुल्क निर्भरता मानचित्रण उपकरण?
- 20. नि: शुल्क MySQL सिंक्रनाइज़ेशन टूल
- 21. कार्य बनाम स्टेटिक तरीके
- 22. एफ # कार्य बनाम मूल्य
- 23. लिस्प: मैक्रोज़ बनाम कार्य
- 24. सी ++ कार्य: एम्परसेंड तारांकन
- 25. स्मॉलटॉक-शैली संदेश बनाम सी-शैली कार्य
- 26. सी #: कार्य प्रतिनिधि बनाम स्पष्ट प्रतिनिधि
- 27. कार्य
- 28. सी ++ स्थैतिक चर का उपयोग करते हुए विरासत सदस्य कार्य
- 29. PHP (eval बनाम call_user_func बनाम परिवर्तनीय कार्य ...)
- 30. अज्ञात नामस्थान में निजी वर्ग कार्य बनाम कार्य
कृपया यह भी ध्यान दें कि "विधि" एक सामान्य ऑब्जेक्ट उन्मुख शब्द है। सी ++ में "विधियों" नहीं हैं, बस "कार्य"। सी ++ मानक कभी भी "विधि" शब्द का उपयोग नहीं करता है। इसके बजाय, "सदस्य फ़ंक्शन" या "फ्री फ़ंक्शन" का उपयोग करना पसंद करते हैं। –
ब्रायन की टिप्पणी वास्तव में जवाब होना चाहिए। यही कारण है कि यहां आने वाले अधिकांश लोग ढूंढ रहे हैं ... इस प्रश्न में विधियों का भी उल्लेख नहीं है। –
सहमत हुए। शायद सवाल का शीर्षक बदलना चाहिए, यह वास्तव में भ्रामक है। – Ben