क्या यूनियन के साथ एक या अधिक तरीकों से कुछ गलत है? या कुछ भी देखने के लिए बाहर? (मैं रचनाकारों/विनाशकों को स्किज़ोफ्रेनिक कारणों के लिए समस्याग्रस्त देख सकता हूं)सी ++: विधियों के साथ संघ?
उत्तर
सी ++ 03 & C++ 0x (ड्राफ्ट N3092) मानकों से:
9,5 यूनियन
एक संघ ( निर्माणकर्ता और विनाशकर्ता सहित) सदस्य कार्य कर सकते हैं, लेकिन वर्चुअल (10.3) फ़ंक्शंस। एक संघ में बेस क्लास नहीं होंगे। एक संघ आधार वर्ग के रूप में उपयोग नहीं किया जाएगा।
कुल प्रारंभकर्ता वाक्य रचना (U u = { 42 };
) का उपयोग संघ शुरु कर रहा है या एक सदस्य बाद में (U u; u.i = 42;
) की स्थापना "समस्याग्रस्त" नहीं है। और न ही इसे एक कन्स्ट्रक्टर (U u(42);
) का उपयोग करके शुरू कर रहा है।
केवल "पकड़" यह है कि आप एक संघ के लिए कुल प्रारंभकर्ता वाक्यविन्यास का उपयोग नहीं कर सकते हैं जिसमें उपयोगकर्ता परिभाषित कन्स्ट्रक्टर है।
सी ++ 0x के लिए यह नया है, या यह सी ++ मानक का हिस्सा रहा है? –
@ जिम: वह हिस्सा अपरिवर्तित है। –
यूनियनों में रचनाकार हो सकते हैं? तो कब निर्माण/समस्या नहीं है? –
आप इस तरह की चीज़ को कैसे लागू कर सकते हैं? यहां एक संघ के लिए एक सूचक है, आशा है कि आपको कोई फर्क नहीं पड़ता कि आपको पता नहीं है कि कौन से चर उपयोग करने के लिए सुरक्षित हैं और कौन नहीं हैं।
यूनियन एक मृत भाषा सुविधा वास्तव में वैसे भी हैं- वे लाइब्रेरी-आधारित विधियों जैसे बूस्ट :: संस्करण या बूस्ट :: किसी भी द्वारा पूरी तरह से हटा दिए गए हैं। शून्य * और कार्यात्मक मैक्रोज़ के समान प्रकार - वे अन्य विकल्पों की तुलना में सी ++ में बहुत ही कम उपयोगी होते हैं।
एम्बेडेड दुनिया को न भूलें। कभी-कभी चीजें 100% टाइपएफ़ नहीं होती हैं। –
@ जेसन: एम्बेड किए जा रहे कुछ भी कैसे बदलते हैं? या तो आप जानते हैं कि यह किस प्रकार का है, इसलिए एक नियमित चर का उपयोग करें, आप जानते हैं कि सभी प्रकार संबंधित हैं, इसलिए बहुरूपता का उपयोग करें, या आपको यह जानने की जरूरत है कि आप कुछ भी करने से पहले क्या कर सकते हैं। – Puppy
एंबेडेड भाषा प्रति भाषा के बारे में कुछ भी नहीं बदलता है, लेकिन यह गतिशील स्मृति आवंटन और बहुरूपता (और अधिक बढ़ावा देने के लिए) पर सीमा रखता है जो आपको अन्य तकनीकों की ओर अग्रसर करता है। अक्सर दो 16-बिट # एस और 32-बिट #, या 16- या 32-बिट # और बिटफील्ड के साथ एक स्ट्रक्चर के बीच एक संघ के बीच एक संघ होता है। उन मामलों में संघ के दोनों सदस्यों के पास समान रूप से वैध सामग्री होती है; यह दोनों प्रकार है। –
- 1. संघ सी # में सूचियों
- 2. सी ++ 11 गैर-तुच्छ सदस्यों के साथ 11 अज्ञात संघ
- 3. संघ या संघ के लिए, यह प्रश्न
- 4. Sql सर्वर संघ के साथ हालत
- 5. सी # विधियों
- 6. विधियों सी #
- 7. सी ++ संघ सरणी और युद्ध?
- 8. संघ
- 9. संघ
- 10. क्लास विधियों के साथ उद्देश्य-सी डॉट नोटेशन?
- 11. शुद्ध वर्चुअल विधियों के साथ क्लोनिंग सी ++ कक्षा
- 12. सी # एक्सटेंशन विधियों के साथ घटनाओं को संभालना
- 13. एक संघ
- 14. अंदर कॉलिंग विधियों() - सी #
- 15. संघ-खोजने के
- 16. संघ initialisation
- 17. प्रतिनिधि सब विधि एक संघ
- 18. सी # में "संरक्षित" विधियों?
- 19. सी # के विस्तार विधियों के बराबर स्कैला?
- 20. सी # @ विधियों के पैरामीटर के लिए संशोधक
- 21. सी संघ की स्पष्टता की मांग
- 22. कोई वर्चुअल विधियों के साथ कोई वर्चुअल विधियों के साथ विरासत विरासत है?
- 23. संघ नक्शे
- 24. बहुभुज के बहुसंख्यक और संघ
- 25. संघ तत्व संरेखण
- 26. वैकल्पिक पैरामीटर के साथ विधियों के साथ सी # प्रतिनिधियों का उपयोग
- 27. सी ++ संघ डेटा मेमोरी बनाम सी स्केलर वैरिएबल प्रकार
- 28. सी ++ वर्ग विधियों के लिए LD_PRELOAD
- 29. सी #: अन्य विधियों में लपेटने के तरीके
- 30. ओवरराइड विधियों के लिए उद्देश्य-सी सम्मेलन
मुझे विनाशकों और मुक्त स्मृति के बारे में आपने जो कुछ बताया है, उसके अलावा मुझे उनके साथ कुछ भी गलत नहीं दिख रहा है। – Jim
यही कारण है कि आप एक वर्ग/संरचना प्रकार के संघीय सदस्य नहीं हो सकते हैं जिनमें एक गैर-तुच्छ कन्स्ट्रक्टर, विनाशक या असाइनमेंट ऑपरेटर है। –