2013-06-28 10 views
6

पर लेआउट प्रतिबंध गैर-मानक लेआउट क्लास में डेटा को पुन: व्यवस्थित करने के लिए संकलक है? उदाहरण के लिए, यह करने के लिएगैर-मानक लेआउट क्लास

struct 
{ 
private: 
    short y; 
public: 
    char x; 
    char z; 
}; 

उत्तर

8

संपादित

struct 
{ 
    char x; 
private: 
    short y; 
public: 
    char z; 
}; 

बदलने की अनुमति दी है:, मैं बोली मूल रूप misremembered संकलक करने की अनुमति दी जाती है कि 9.2/14 प्रति:

Nonstatic डेटा सदस्यों एक (गैर-संघ) वर्ग के समान पहुंच नियंत्रण (क्लॉज 11) आवंटित किए गए हैं ताकि बाद के सदस्यों के पास कक्षा ऑब्जेक्ट के भीतर पते हो। गैर-स्थैतिक के विभिन्न अभिगम नियंत्रण वाले डेटा सदस्यों को आवंटित करने का आदेश निर्दिष्ट नहीं है (11)। कार्यान्वयन संरेखण आवश्यकताओं के कारण दो निकट सदस्य एक दूसरे के तुरंत बाद आवंटित नहीं किए जा सकते हैं; इसलिए हो सकता है प्रबंध आभासी कार्यों (10.3) और आभासी आधार वर्ग (10,1)

के लिए अंतरिक्ष के लिए की आवश्यकताएं क्या यह नहीं कर सकते एक ही पहुँच विनिर्देशक साथ विशेषताओं का पुन: व्यवस्थित करें है।

ने कहा कि मुझे किसी भी कार्यान्वयन के बारे में पता नहीं है जो एक्सेस विनिर्देशों में भी गुणों को पुन: व्यवस्थित करने की स्वतंत्रता लेता है।

+0

कंपाइलर को प्रत्येक एक्सेस विनिर्देश के भीतर ऑर्डर बदलने की अनुमति नहीं है। प्रत्येक एक्सेस विनिर्देश संरेखण का क्रम निर्दिष्ट नहीं है। कंपाइलर को ओ.पी. प्रदर्शन करने की अनुमति है। – John

+0

+1: मैंने हमेशा सोचा है कि यह मानक में क्यों है। –

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