हां - यदि वे पीओडी प्रकार हैं। पीओडी प्रकारों को लेआउट compatable (जिसे आप एक से दूसरे में memcpy कर सकते हैं) के लिए guarenteed हैं अगर उनके पास एक ही क्रम में लेआउट-संगत सदस्यों है। चूंकि उप-वर्ग में स्वचालित रूप से उसके सभी बेस क्लास के सदस्यों को एक ही क्रम में होता है और, इस मामले में, कोई अन्य नहीं, वे लेआउट संगत और इस प्रकार एक ही आकार में होंगे। कल्पना के खंड 9.3 देखें।
ध्यान दें कि आदेश पॉड प्रकार होने के लिए वे (अन्य आवश्यकताओं के अलावा) कोई आभासी कार्यों होना आवश्यक है
संपादित
नवीनतम मसौदा मानक दो सेट में पॉड प्रकार के लिए आवश्यकताओं को विभाजित किया है: तुच्छ कक्षाएं और मानक लेआउट कक्षाएं। पॉड कक्षाएं उन है कि दोनों तुच्छ और मानक लेआउट हैं, और मैं, sizeof गारंटी आप चाहते हैं के लिए विश्वास है कि सिर्फ मानक लेआउट किया जा रहा पर्याप्त होता है - वे नहीं भी तुच्छ (और इस प्रकार पॉड होना जरूरत है) कक्षाएं। कल्पना से मानक लेआउट के लिए आवश्यकताएँ हैं:
एक मानक लेआउट वर्ग एक वर्ग है जो:
- प्रकार गैर मानक लेआउट वर्ग का कोई गैर स्थैतिक डेटा सदस्य हैं (या इस प्रकार के सरणी) या संदर्भ,
- इसमें कोई वर्चुअल फ़ंक्शन (10.3) नहीं है और कोई वर्चुअल बेस क्लासेस नहीं है (10।1),
- कोई गैर मानक लेआउट आधार वर्ग है,
- - एक ही अभिगम नियंत्रण (क्लॉज 11) सभी गैर-स्थिर डेटा सदस्यों के लिए,
है या तो कोई गैर है अधिकांश व्युत्पन्न वर्ग में स्थिर डेटा सदस्य और गैर-स्थैतिक डेटा सदस्यों वाले अधिकांश बेस क्लास में, या गैर-स्थैतिक डेटा सदस्यों के साथ कोई आधार वर्ग नहीं है, और
- के समान प्रकार के आधार वर्ग नहीं हैं पहला गैर स्थैतिक डेटा सदस्य .108
स्रोत
2010-05-07 01:28:46
यह भी ध्यान दें कि 'बार' था टी 'फू' में निहित है ''''' में मौजूद 'बार' से भिन्न आकार हो सकता है। उदाहरण के लिए, एक सामान्य अनुकूलन आधार वर्गों के आकार शून्य होने पर है, यदि वे खाली हैं, लेकिन nonzero अगर वे बेस-क्लास के रूप में निहित नहीं हैं (जैसा कि सी ++ द्वारा आवश्यक है)। –