C ++ में, अपवाद जैसी विशेषताएं आपके पूरे कार्यक्रम को प्रभावित करती हैं: आप उन्हें या तो अपने पूरे कार्यक्रम में अक्षम कर सकते हैं , या आपको पूरे कोड में उनसे निपटने की आवश्यकता है। C ++ रिपोर्ट पर एक प्रसिद्ध लेख के रूप में :
काउंटर-सहजता से, कोडिंग अपवादों का कठिन हिस्सा स्पष्ट फेंकता और कैच नहीं है। अपवादों का उपयोग करने का वास्तव में कठिन हिस्सा सभी हस्तक्षेप कोड को इस तरह से लिखना है कि एक मनमाना अपवाद अपने थ्रो साइट से अपने हैंडलर तक प्रचार कर सकता है, सुरक्षित रूप से पहुंच सकता है और रास्ते में कार्यक्रम के अन्य हिस्सों को नुकसान पहुंचाए बिना।
चूंकि new
अपवादों को भी फेंकता है, इसलिए प्रत्येक फ़ंक्शन को बुनियादी अपवाद सुरक्षा प्रदान करने की आवश्यकता होती है - जब तक कि यह केवल उन फ़ंक्शन को कॉल करता है जो बिना किसी अपवाद के फेंकने की गारंटी देते हैं - जब तक कि आप अपने पूरे प्रोजेक्ट में अपवादों को पूरी तरह से अक्षम न करें ।
इसलिए, अपवाद एक "संपूर्ण-कार्यक्रम" या "पूरी-टीम" सुविधा है, क्योंकि उन्हें उपयोग करने वाली टीम में सभी को समझना चाहिए। लेकिन सभी C ++ फीचर्स ऐसे नहीं हैं, जहाँ तक मुझे पता है।
एक संभावित उदाहरण यह है कि अगर मुझे टेम्प्लेट नहीं मिलते हैं, लेकिन मैं उनका उपयोग नहीं करता हूं, तो भी मैं सही C ++ लिख पाऊंगा - या नहीं। मैं भी sort
पूर्णांक की एक सरणी पर कॉल कर सकते हैं और इसके अद्भुत गति लाभ wrt का आनंद ले सकते हैं। सी qsort
(क्योंकि कोई फ़ंक्शन पॉइंटर नहीं कहा जाता है), बग को जोखिम में डाले बिना - या नहीं? ऐसा लगता है कि टेम्प्लेट "पूरी टीम" नहीं हैं।
क्या अन्य सी ++ फीचर्स हैं जो कोड को सीधे उपयोग नहीं करते हैं, और इसलिए "पूरी टीम" हैं? मैं विशेष रूप से सी में मौजूद नहीं सुविधाओं में दिलचस्पी रखता हूं
अपडेट : मैं विशेष रूप से उन सुविधाओं की तलाश कर रहा हूं, जहां कोई भाषा-लागू संकेत नहीं है जो आपको उनके बारे में पता होना चाहिए। पहले उत्तर में मुझे कांस्ट-करेक्शन का उल्लेख मिला, जो पूरी टीम भी है, इसलिए हर किसी को इसके बारे में जानने की जरूरत है; हालाँकि, AFAICS आपको केवल तभी प्रभावित करेगा जब आप किसी ऐसे फ़ंक्शन को कॉल करेंगे जो चिह्नित है const
, और कंपाइलर आपको इसे नॉन-कास्ट ऑब्जेक्ट्स पर कॉल करने से रोकेगा, इसलिए आपको Google के लिए कुछ मिलेगा। अपवादों के साथ, आपको वह भी नहीं मिलता है; इसके अलावा, वे हमेशा जैसे ही आप उपयोग करते हैं new
, इसलिए अपवाद अधिक "कपटी" होते हैं। चूंकि मैं इसे उद्देश्यपूर्ण रूप से वाक्यांश नहीं दे सकता, हालांकि, मैं किसी भी पूरी टीम की सुविधा की सराहना करूंगा।
अद्यतन 2 : C ++ सुविधा के बजाय मुझे "C ++ - विशिष्ट सुविधा" जैसी कुछ चीज़ों को लिखना चाहिए, जो कि मल्टीथ्रेडिंग जैसी चीज़ों को बाहर करने के लिए जो कि बड़ी संख्या में मुख्यधारा की प्रोग्रामिंग भाषाओं पर लागू होती हैं।
परिशिष्ट: यह प्रश्न वस्तुनिष्ठ क्यों है (यदि आप आश्चर्य करते हैं)
सी ++ एक जटिल भाषा है, इसलिए कई प्रोजेक्ट या कोडिंग गाइड "सरल" सी ++ सुविधाओं का चयन करने की कोशिश करते हैं, और कई लोग ज्यादातर व्यक्तिपरक मानदंडों के अनुसार कुछ को शामिल करने या बाहर करने का प्रयास करते हैं। इसके बारे में प्रश्न एसओ के यहाँ नियमित रूप से बंद हो जाते हैं।
ऊपर, इसके बजाय, मैंने परिभाषित किया (जितना संभव हो उतना ठीक है) एक "पूरी टीम" भाषा की विशेषता क्या है, एक उदाहरण (अपवाद) प्रदान करें, साथ में C ++ के बारे में साहित्य में व्यापक समर्थन साक्ष्य प्रदान करें, और C ++ में पूरी-टीम सुविधाओं के लिए पूछें। अपवादों से परे।
चाहे आपको "पूरी टीम" सुविधाओं का उपयोग करना चाहिए, या क्या यह एक प्रासंगिक अवधारणा है, व्यक्तिपरक हो सकता है - लेकिन इसका मतलब है कि इस प्रश्न का महत्व हमेशा की तरह व्यक्तिपरक है।