2009-05-12 18 views
6

current C++0x draft में मैंने देखा है कि उन्होंने अपेक्षित व्यवहार (महान कदम!) को हाइलाइट करने के लिए कुछ नए स्पष्ट कीवर्ड पेश किए हैं।एक छोटे से जोड़े के लिए कैसे पूछें? (शुद्ध आभासी कार्यों का वाक्यविन्यास)

उदाहरण: defaulted/deleted कार्य (= डिफ़ॉल्ट और = हटाना), नई nullptr निरंतर, explicit कीवर्ड रूपांतरण ऑपरेटरों के लिए प्रयोग करने योग्य भी ...

तो मैं भी देखने के लिए एक उम्मीद = शुद्ध वर्चुअल फ़ंक्शंस के लिए शुद्ध वाक्यविन्यास।

बदले में बदसूरत (आईएमएचओ, ज़ाहिर है) = 0 चीज अभी भी मौजूद है।

ठीक है, मैं # शुद्ध 0 (और कभी-कभी ऐसा करता हूं) का उपयोग कर सकता हूं, लेकिन मुझे लगता है कि समेकन/स्थिरता निश्चित रूप से मानक के लिए एक लक्ष्य होना चाहिए। इसके अलावा मैं जानता हूँ कि यह सिर्फ अति पंडिताऊ अनुरोध का एक प्रकार है, लेकिन = 0 सी ++ (व्यंजना) की मेरी कम से कम पसंदीदा हिस्सा से एक है ...

मेरे सवालों का वास्तव में था:

  • मुझे पता है, नया मानक फीचर-पूर्ण है, लेकिन क्या यह अभी भी "आवश्यक मैक्रो" चीज़ के रूप में, इस छोटे से पैडेंटिक अतिरिक्त के लिए पूछना संभव है?
  • अगर उत्तर सकारात्मक है, तो कैसे? (किसी समिति के सदस्य के आसपास?)
  • क्या मैं इस अतिरिक्त पूछने के लिए थोड़ा सा पैडेंटिक (या गलत) हूं? शुद्ध आभासी कार्यों के वर्तमान वाक्यविन्यास के बारे में आप क्या सोचते हैं?
+0

मुझे बीटीडब्ल्यू से +1। यह एक बिल्कुल अच्छा सवाल है, और मुझे लगता है कि मानकों की समिति इसे प्यार करेगी अगर अधिक लोगों ने अपने काम में रूचि ली। :) – jalf

+0

धन्यवाद! जैसा कि अन्य टिप्पणियों में कहा गया है कि मैं एक विशेषज्ञ नहीं हूं और मैंने अभी अंतिम ड्राफ्ट (1347 पेज) पढ़ना शुरू कर दिया है ... –

उत्तर

29

कि एक छोटे से पंडिताऊ परिवर्तन नहीं है। एक नया कीवर्ड पेश करना सबसे बड़ा परिवर्तनों में से एक है जिसे आप पूछ सकते हैं। यह कुछ ऐसा है जो वे लगभग किसी भी कीमत से बचने की कोशिश करते हैं। "शुद्ध" शब्द का उपयोग करने वाले सभी कोड के बारे में सोचें, जो टूट जाएंगे।

सामान्य रूप से, उनका दिशानिर्देश केवल उस भाषा में चीजों को जोड़ना है जो से पहले नहीं किया जा सका।pure कीवर्ड कुछ नया सक्षम नहीं करेगा (नलप्टर कीवर्ड के विपरीत, जो बेहतर प्रकार की जांच को सक्षम बनाता है, उदाहरण के लिए), इसलिए इसकी अपेक्षा बहुत कम प्राथमिकता है। ध्यान रखें कि वे जो कुछ भी करते हैं वह मूल रूप से रखरखाव का काम है। # 1 लक्ष्य भाषा को तोड़ने से बचाना है (या मौजूदा कोड जो इसका उपयोग करता है)। जो भी विशेषताएं शामिल हैं उन्हें केवल तभी जोड़ा जाता है जब इसे पीछे की संगतता को तोड़ने के बिना किया जा सके।

हालांकि, समिति कम या ज्यादा खुली मंच है। अपने website के आसपास ब्राउज़ करें, और आपको कुछ ईमेल पते ढूंढने में सक्षम होना चाहिए। या comp.std.c++ समाचार समूह का उपयोग करें।

मुझे विश्वास है कि उनकी मीटिंग भी खुली हैं, इसलिए आप अगले वाले को गेटक्रैश कर सकते हैं। ;)

+0

मैं खुद एक विशेषज्ञ नहीं हूं लेकिन मुझे लगता है कि * = शुद्ध *, उस संदर्भ में उपयोग किया जाता है, कुछ भी तोड़ना नहीं चाहिए। वैसे भी, "एक नए कीवर्ड के रूप में शुद्ध" समस्या के बारे में, मुझे लगता है कि आप सही हैं: मैंने उस मुद्दे पर बिल्कुल विचार नहीं किया ... धन्यवाद। –

+3

इस उत्तर के लिए धन्यवाद। यह जानना दिलचस्प है कि डिफ़ॉल्ट और हटाए गए दोनों पहले ही सी ++ कीवर्ड थे, लेकिन विभिन्न संदर्भों में। –

+1

हालांकि एक सवाल है। उन्होंने एक नया कीवर्ड के रूप में "null_ptr" पेश किया। अगर उन्होंने इसे "अपरिभाषित" नाम दिया था, तो यह शुद्ध वर्चुअल फ़ंक्शंस को परिभाषित करने के लिए इसका उपयोग करने के लिए तर्कसंगत होता, जैसा कि गियान द्वारा सुझाया गया है ... या क्या मैं सपना देख रहा हूं? :) –

4

सबसे पहले, comp.std.c++ समाचार समूह पढ़ने शुरू करें। यह सार्वजनिक चर्चाओं के लिए जगह है।

दूसरा, मैं कहूंगा कि वर्तमान सी ++ 0x ड्राफ्ट पर केवल इरेटा लागू किया जाएगा, समिति वास्तव में अंतिम चरण में है।

यदि आप बेहद उत्सुक हैं, तो वास्तव में अच्छे औचित्य के साथ समाचार समूह में अपना प्रस्ताव दें। और उम्मीद है कि इसे गोली मार दी जाएगी। पर्याप्त रूप से अधिक उपयोगी प्रस्ताव (जैसे मॉड्यूल) ने इसे नहीं बनाया है।

अनुपूरक: यदि आप इस तरह कुछ प्रगति करना चाहते हैं, तो आपको या तो समिति में शामिल होना होगा (या एएसएसआई) समिति में, या किसी प्रस्ताव को आपके प्रस्ताव को धक्का देने के लिए ढूंढें।

+0

आपके प्रश्न के लिए धन्यवाद। मुझे पता है कि मेरा "प्रस्ताव" छोटा, पैडेंटिक, माध्यमिक है ... लेकिन मैं चंद्रमा के लिए नहीं पूछ रहा हूं। शायद मैं गलत हूं लेकिन समेकन और स्थिरता "अतिरिक्त" से पूछना अधिक महत्वपूर्ण है। –

+0

आप चंद्रमा के लिए पूछ रहे हैं। जैसे ही आल्फ ने बताया, आप एक नया कीवर्ड मांग रहे हैं जो कोई नई अभिव्यक्ति नहीं जोड़ता है। बीटीडब्ल्यू, रिचर्ड का जवाब मर चुका है। मुझे मानक चर्चाओं में पहले गोली मार दी गई है। यह घातक नहीं है। –

+0

मैं पूरी तरह से आपसे सहमत हूं (सभी): "अभिव्यक्ति पर कोई बदलाव नहीं" => "क्यों बदलना है, संभवतः मौजूदा सामान तोड़ना?"। आप मेरे "प्रस्ताव" को * शुद्ध * (एलओएल) सौंदर्यशास्त्र के रूप में देख सकते हैं। मैं बस इससे बचना चाहूंगा: ... = हटाएं; ... = डिफ़ॉल्ट; ... = 0; यदि मेरा "प्रस्ताव" "चंद्रमा के लिए पूछ रहे हैं" के रूप में पढ़ता है, तो मैं विनम्रतापूर्वक उस सेवानिवृत्त हूं (वास्तव में क्षमा करें - कोई मजाक नहीं)। धन्यवाद! :) –

3

बहुत देर हो चुकी है। अनुरोधों के लिए कॉल कुछ साल पहले समाप्त हुआ था।

(एक पृष्ठ जहाँ प्रस्तुतियाँ आयोजित की गई थी लेकिन मुझे लगता है कि सूची अब और नहीं मिल सकता है।)

+0

ठीक है, मैं फिर से कोशिश करूंगा, बाद में ... धन्यवाद। –

+0

बहुत बुरा मत महसूस करें - दूसरों ने मूल रूप से सुझाव दिया है। मेरे सुझाव थे: int, short, आदि को हटाएं और int8, int16, आदि के साथ प्रतिस्थापित करें और चार और नए प्रकार के ग्लिफ को भी हटा दें जो यूनिकोड वर्णों का प्रतिनिधित्व करने वाला एक टेम्पलेट क्लास होगा। –

+0

मेरा मानना ​​है कि सी 99 प्रकार (जैसे int16_t) मानक में स्वीकार किए गए थे, लेकिन टाइडरफ़ीड्स के रूप में आपको हेडर फ़ाइल भी शामिल है। समिति नए कीवर्ड पेश करने में बेहद अनिच्छुक है, लेकिन वैकल्पिक टाइपिफ किसी भी असुविधा की संभावना कम है। –

5

जिस चीज से आप नफरत करते हैं सी 0+ के बारे में अधिकतर "= 0;" ???

क्या आपने कभी इस भाषा को उपयोग किया है? ऐसी कई अन्य चीजें हैं जिन पर आप अपनी नफरत पर बेहतर खर्च कर सकते हैं।

<Flame retardant> मैंने 10 से अधिक वर्षों के लिए सी ++ का उपयोग किया है। मेरे लिए यह अभी भी पसंद की भाषा है जब भी मुझे कुछ कम्प्यूटेशनल भारी उठाने की ज़रूरत होती है। </Flame retardant>

+0

यह इस भाषा की सबसे बुरी चीज नहीं है, IMHO (इस भाषा पर 6+ वर्ष , बीटीडब्ल्यू)। लेकिन मुझे इस दिन बहुत सी नफरत है क्योंकि मेरे दिन सी ++ के साथ और जब मैंने ड्राफ्ट देखा (यह और पिछला) मुझे इस मोर्चे पर "कुछ" देखने की उम्मीद थी। दूसरे शब्दों में कहा: मुझे लगता है कि यह अतिरिक्त * इतना छोटा * है कि यह अगले ड्राफ्ट में बनाया जा सकता है। मुझे "जैसा-नया-कीवर्ड" समस्या की उम्मीद नहीं थी क्योंकि मेरा "प्रस्ताव" केवल "आवश्यक मैक्रो" तक ही सीमित था। :) –

+2

लेकिन एक मैक्रो और भी समस्याएं पैदा करेगा। यदि यह एक कीवर्ड था, तो एक कंपाइलर * स्केल को सीमित कर सकता था ताकि यह "शुद्ध" नामक चर या फ़ंक्शन को प्रभावित न करे। लेकिन एक मैक्रो उन्हें 0 * सभी * के लिए प्रतिस्थापित करेगा। :) – jalf

+0

हां, यह एक समस्या है। मैंने इस सवाल से एक सरल प्रस्ताव की पेशकश की, सही समाधान के साथ नहीं। क्षमा करें ... ^^ ' –

2

jalf एक कीवर्ड जोड़ने की खामियों के बारे में टिप्पणी करने के अलावा (जिसके साथ मैं 100% सहमत) आप भी कंप्यूटर विज्ञान वाक्यांश pure function पहले से ही एक अर्थ नहीं है की तुलना में ध्यान देना चाहिए। इसका मतलब है कि एक ही पैरामीटर दिए जाने पर एक फ़ंक्शन हमेशा एक ही मान देता है और इसका कोई दुष्प्रभाव नहीं होता है। तो वर्चुअल फ़ंक्शन को इंगित करने के लिए = pure चुनना जो ओवरराइड होना चाहिए, खराब वाक्यविन्यास विकल्प होगा।

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