2013-04-02 5 views
26

एक सहयोगी ने मुझे बताया कि, निम्नलिखित प्रकार में, सभी सदस्यों को स्मृति में एक निर्दिष्ट आदेश (एक दूसरे के सापेक्ष) निर्दिष्ट किया गया है।क्या इन सदस्यों को अनिर्दिष्ट आदेश दिया गया है?

मुझे शक है, क्योंकि उनके पास एक ही पहुंच स्तर है।

कौन सही है?

struct foo { public: int x; public: int y; public: int z; }; 

उत्तर

31

आपका सहयोगी के लिए सी ++ 03 सही है:

[C++03: 9.2/12]: एक (गैर संघ) वर्ग के Nonstatic डेटा सदस्यों एक बीच पहुँच-विनिर्देशक बिना घोषित ताकि आवंटित किए जाते हैं बाद में सदस्यों कक्षा वस्तु के भीतर उच्च पते हैं। एक्सेस-विनिर्देशक द्वारा अलग किए गए गैर-डेटा डेटा सदस्यों के आवंटन का आदेश अनिर्दिष्ट है (11.1)। [..]

लेकिन आप के लिए सही हैं सी ++ 11:

[C++11: 9.2/14]: एक (गैर संघ) की Nonstatic डेटा सदस्यों वर्ग ही अभिगम नियंत्रण (11 खण्ड के साथ) आवंटित किए गए हैं ताकि बाद के सदस्यों को कक्षा वस्तु के भीतर उच्च पते हो। विभिन्न अभिगम नियंत्रण वाले गैर स्थैतिक डेटा सदस्यों के आवंटन का आदेश अनिर्दिष्ट है (11)। [..]

(अंतर स्पॉट।)

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