मूल रूप से यह एक this question की अनुवर्ती है ..आधार वर्गों का शून्य आकार क्यों हो सकता है?
जब मैं स्टैंडर्ड डॉक्स पर गौर मैं इस पाया ..
कक्षा 9.3 में,
पूरा वस्तुओं और सदस्य कक्षा प्रकार के उप-तत्वों में nonzero आकार होगा। 96) ...
हाँ, सच .. लेकिन,
96) बेस वर्ग subobjects हैं तो विवश नहीं।
तो, जब मैं Stroustrup's FAQ में देखा, वहाँ
के रूप में एक उदाहरण हैvoid f(X* p)
{
void* p1 = p;
void* p2 = &p->a;
if (p1 == p2) cout << "nice: good optimizer";
}
मेरा प्रश्न मैं नहीं समझ सकता है कि यह कैसे एक अनुकूलन और भी कारण है कि आधार वर्ग की अनुमति दी जाती है शून्य आकार है?
मुझे लगता है कि इसका मतलब है कि खाली बेस क्लास * योगदान * व्युत्पन्न कक्षा में कोई अतिरिक्त आकार नहीं है। यदि आप एक खाली बेस क्लास को तुरंत चालू करते हैं तो उसके पास अभी भी न्यूनतम आकार 1. –
@ पॉल आर होगा: आप वास्तव में एक खाली _base_ कक्षा को तुरंत चालू नहीं कर सकते हैं - परिभाषा के आधारभूत आधार किसी अन्य प्रकार के अविभाज्य भाग हैं। आर्मेन Tsirunyan की स्पष्ट परिभाषा भी देखें। – MSalters
मुझे आश्चर्य है कि यह आकार शून्य है और ऐसी सभी चीज़ें आवश्यक हैं। –