c++ - Usage of union inside a class -


मैंने कुछ कोड इस प्रकार देखे हैं:

  class A {निजी: union {B * प्रतिनिधि; ए * अगला; }; // इस गुमनाम परिभाषित कोई चर! शून्य मजेदार () {ए * पी = नया ए; P- & gt; अगला = नल; // पी क्यों 'अगले' के सदस्य चर है? }};   

मैंने बिना किसी त्रुटि के VS2010 के साथ उपरोक्त कोड संकलित किया है यहां सवाल है,

क्यों पी में सदस्य चर 'अगला' है?

  union {B * rep; ए * अगला; };   

जहाँ तक मुझे पता है, यह बिना एक चरणीय परिभाषित किए बिना एक अज्ञात संघ है हम इस यूनियन के भीतर सदस्य चर का उपयोग कैसे कर सकते हैं?

क्योंकि यह काफी अज्ञात संघ है करता है, यह संलग्न नाम स्थान में शून्य-या-अधिक चर को परिभाषित करता है (जो एक कक्षा घोषणा में उन्हें फ़ील्ड नाम देता है) जो अतिव्यापी स्मृति को नियंत्रित करता है इसलिए उपयोग में यह वही है जैसा आपने घोषित किया था

  वर्ग ए {निजी: बी * प्रतिनिधि; ए * अगला; शून्य मजेदार () {ए * पी = नया ए; P- & gt; अगला = नल; }};   

... प्रतिनिधि और अगले अधिग्रहण अतिव्यापी अंतरिक्ष (या दो बिंदुओं के समान आकार, एक ही स्थान होगा) को छोड़कर, और इसलिए सभी खतरों और लाभ जो साथ आते हैं एक नामित संघ।

Comments