2009-11-18 13 views
42

सी ++ मुहावरे सी ++ प्रोग्रामर को क्या पता होना चाहिए?क्या सी ++ मुहावरे सी ++ प्रोग्रामर का उपयोग करना चाहिए?

सी ++ मुहावरे से, मेरा मतलब डिजाइन पैटर्न या कुछ चीजों को करने का तरीका है जो केवल सी ++ के लिए लागू होते हैं या अधिकतर भाषाओं की तुलना में सी ++ के लिए अधिक लागू होते हैं।

क्यों किसी को मुहावरे का उपयोग करना चाहिए, और मुहावरे क्या हासिल करते हैं?

+1

सी ++ पर लागू होने वाली कुछ भी आम तौर पर अन्य lnaguages ​​पर लागू होती है (क्योंकि सी ++ कई प्रोग्रामिंग शैलियों को कवर करती है)। –

+6

क्या आप कई अन्य भाषाओं में आरएआईआई और पीआईएमपीएल कर सकते हैं? – Partial

+0

@ पार्टियल: आरएआईआई हां, अधिकांश भाषाओं की तुलना में सी ++ में यह और अधिक प्राकृतिक है। –

उत्तर

27

यहां एक list है। अगर मुझे एक जोड़े को चुनना पड़ा तो मैं उत्सुकता से आवर्ती टेम्पलेट पैटर्न या वर्चुअल कंटस्ट्रक्टर्स के साथ जा सकता हूं।

+3

+1 मुझे सूची पसंद है। –

+2

+1 uber सूची के लिए: पी – Partial

+2

ग्रेट लिस्ट मैं अक्सर परामर्श करता हूं; हालांकि उत्सुकता से आवर्ती टेम्पलेट मेरी सूची में बहुत कम होगा क्योंकि प्रत्येक सी ++ प्रोग्रामर को कुछ जानने की आवश्यकता होगी। – Elemental

10

pimpl, उर्फ ​​पी ointer को IMPL ementation?

+17

मैं व्यक्तिगत रूप से इसे नफरत करता हूं। :/ – GManNickG

+0

ठीक है, आपको इसे हर जगह उपयोग करने की ज़रूरत नहीं है :) – Dmitry

+3

तकनीकी रूप से, आप _anywhere_ का उपयोग करने के लिए _have_ नहीं करते हैं। :-) –

54

सीखने के लिए अब तक का सबसे महत्वपूर्ण "पैटर्न" और पता है कि सी ++ के लिए अद्वितीय (लगभग) अद्वितीय है RAII (संसाधन अधिग्रहण प्रारंभ है)।

संपादित करें: (प्रश्न में संपादित अतिरिक्त प्रश्न का उत्तर देने के लिए)। आप प्राथमिक रूप से (सेमी-) स्वचालित संसाधन प्रबंधन के लिए RAII का उपयोग करते हैं। सबसे स्पष्ट उपयोग ऑब्जेक्ट्स के स्वामित्व वाले संसाधनों को मुक्त कर रहा है जब स्वामित्व वाली वस्तुएं गुंजाइश से बाहर हो जाती हैं, जैसे स्मृति मुक्त करना या बंद करना।

+30

+1। दुर्भाग्य से सबसे खराब नाम के साथ मुहावरे भी। –

+1

डॉन; मुझे सी ++ में अधिक महत्वपूर्ण लोगों में से एक गलत नहीं है, लेकिन यह सी ++ के लिए अद्वितीय होने के करीब भी नहीं है। हालांकि सी ++ ने इसे प्रसिद्ध बना दिया है। –

+4

मुझे लगता है कि यह उन चीजों के बारे में नहीं है जो सी ++ के लिए अद्वितीय हैं; बल्कि, यह उन चीजों के बारे में है जो सी ++ में विशिष्ट रूप से सर्वव्यापी हैं; ऐसा कुछ जिसे आप वास्तव में बिना जानने के प्राप्त कर सकते हैं, जिसे आप शायद कुछ अन्य भाषाओं में कर सकते हैं। आरएआईआई निश्चित रूप से ऐसी चीज होगी। –

8

टेम्पलेट मेटाप्रोग्रामिंग। यह बहुत अच्छा है क्योंकि यह मूल रूप से संकलित-समय बतख टाइपिंग है, इसलिए आपको स्थिर टाइपिंग की गति के साथ बतख टाइपिंग की अधिकांश लचीलापन मिलती है।

+1

नहीं है यह बतख टैपिंग? – Eric

+9

बतख * को टेप नहीं किया जा सकता है। – greyfade

+0

+1 * बतख टाइपिंग * के लिए। मुझे हमेशा लगता है कि बतख टाइपिंग SFINAE – Manu343726

7

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

+0

का रनटाइम संस्करण है! क्या आपने अनुक्रम रचनाकारों और रूपांतरण रचनाकारों के बारे में सुना है? – Partial

+0

क्या आपका मतलब 'iota()' है? सूची से एक और चूक जनरेटर वस्तुओं है। –

+0

ईमानदार होने के लिए, मैं iota() से परिचित नहीं हूं, लेकिन मैंने एक उदाहरण के साथ एक उत्तर पोस्ट किया है। – Partial

5

रैमी, गाय, पिंपल, डेमेटर का कानून (सुनिश्चित नहीं है कि मुहावरे के रूप में वर्गीकृत किया जा सकता है), गुणों और नीतियों को टाइप करें। (डेमेटर का गाय और कानून सी ++ तक सीमित नहीं है)

+0

लक्षण कुछ ऐसा है जो मैंने कहीं और नहीं देखा है (लेकिन फिर मैं फिर से यह कठिन नहीं देख रहा हूं)। –

6

मजबूत टाइपिंग और const शुद्धता का पता लगाने में भी बहुत मददगार है।

मैं डिफ़ॉल्ट कॉपी कन्स्ट्रक्टर और असाइनमेंट ऑपरेटरों को भी प्रतिबंधित करता हूं। मैं वास्तव में उससे परे जाता हूं, लेकिन वे सबसे आम हैं। मुझे लगता है कि अगर वे निहित नहीं थे तो जीवन आसान होगा।

संबंधित मुद्दे