C++ sizeof operator before and after extending -
अब मैं C ++ लेकिन अगर मैं वर्ग के विस्तार को हटाता हूं: क्या कोई भी उन दोनों उदाहरणों में ऐसा लगता है कि वीएस एक स्थिति से ठीक से संभाल नहीं सकता है जब एक से अधिक खाली बेस कक्षाएं हैं। आपके पहले उदाहरण में एक खाली आधार वर्ग है, और दूसरे में दो हैं। उदाहरण के लिए मेरे बॉक्स पर इस कोड को वीएस2013 पर संकलित किया गया है: आउटपुट जबकि। लेकिन यह व्यवहार अभी भी मानक संगत है, क्योंकि मानक खाली बेस कक्षाओं को दूर करने के लिए कार्यान्वयन को उपकृत नहीं करता। sizeof ऑपरेटर के परिणाम का परीक्षण कर रहा हूं:
< कोड> वर्ग एस {}; वर्ग ए: सार्वजनिक एस {आभासी शून्य मज़ा () = 0; }; वर्ग बी {}; वर्ग सी: सार्वजनिक बी, सार्वजनिक ए {}; int main () {cout & lt; sizeof (ए) & lt; & lt; endl; // परिणाम 4 cout है & lt; sizeof (सी) & lt; & lt; endl; // परिणाम 8}
class A {virtual void fun () = 0; }; वर्ग बी {}; वर्ग सी: सार्वजनिक बी, सार्वजनिक ए {}; int main () {cout & lt; sizeof (ए) & lt; & lt; endl; // परिणाम 4 cout है & lt; sizeof (सी) & lt; & lt; endl; // परिणाम 4}
sizeof (C) के आउटपुट के अलग-अलग व्याख्या कर सकता है? क्लास
एस सिर्फ एक खाली वर्ग है (मुझे पता है,
sizeof (S) == 1 ), तो यह क्यों एक फर्क पड़ता है या नहीं
A एक आधार वर्ग है? खासकर जब से यह
sizeof (A) ,
sizeof (सी)
#include & lt; iostream & gt; वर्ग बी 1 {}; वर्ग B2 {}; वर्ग B3 {}; वर्ग B4 {}; वर्ग B5 {}; वर्ग बी 6 {}; वर्ग सी 1: बी 1 {}; वर्ग सी 2: बी 1, बी 2 {}; वर्ग सी 3: बी 1, बी 2, बी 3 {}; वर्ग सी 4: बी 1, बी 2, बी 3, बी 4 {}; वर्ग सी 5: बी 1, बी 2, बी 3, बी 4, बी 5 {}; वर्ग सी 6: बी 1, बी 2, बी 3, बी 4, बी 5, बी 6 {}; Int main () {std :: cout & lt; & lt; आकारफ (सी 1) & lt; & lt; '' & Lt; & lt; आकारफ (सी 2) & lt; & lt; '' & Lt; & lt; आकारफ (सी 3) & lt; & lt; '' & Lt; & lt; आकारफ (सी 4) & lt; & lt; '' & Lt; & lt; आकारफ (सी 5) & lt; & lt; '' & Lt; & lt; आकारफ (सी 6) & lt; & lt; std :: endl; }
1 1 2 3 4 5
Comments
Post a Comment