Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में खाली क्लास का आकार शून्य क्यों नहीं होता?


मान लीजिए हमारे पास C++ में एक खाली क्लास है। अब आइए जांचें कि क्या इसका आकार 0 है या नहीं। वास्तव में, मानक 0 आकार के ऑब्जेक्ट्स (या क्लासेस) की अनुमति नहीं देता, क्योंकि इससे दो अलग-अलग ऑब्जेक्ट्स का एक ही मेमोरी लोकेशन होना संभव हो जाएगा। यही कारण है कि यहां तक कि एक खाली क्लास का आकार कम से कम 1 होना चाहिए। यह ज्ञात है कि खाली क्लास का आकार शून्य नहीं होता। आमतौर पर, यह 1 बाइट होता है। नीचे उदाहरण देखें।

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

#include<iostream> using namespace std; class MyClass { }; int main() { cout << sizeof(MyClass); }

आउटपुट

1

यह स्पष्ट रूप से दिखाता है कि एक खाली क्लास का ऑब्जेक्ट कम से कम एक बाइट लेगा ताकि यह सुनिश्चित हो सके कि दो अलग-अलग ऑब्जेक्ट्स के अलग-अलग पते हों। नीचे उदाहरण देखें।

उदाहरण

#include<iostream> using namespace std; class MyClass { }; int main() { MyClass a, b; if (&a == &b) cout <<"Same "<< endl; else cout <<"Not same "<< endl; }

आउटपुट

Not same

डायनामिक एलोकेशन के लिए भी, न्यू कीवर्ड उसी कारण से अलग-अलग पते लौटाता है।

उदाहरण (C++)

#include<iostream> using namespace std; class MyClass { }; int main() { MyClass *a = new MyClass(); MyClass *b = new MyClass(); if (a == b) cout <<"Same "<< endl; else cout <<"Not same "<< endl; }

आउटपुट

Not same

  1. - C++ में ऑटो स्टोरेज क्लास

    C में, ऑटो स्टोरेज क्लास स्पेसिफायर आपको ऑटोमैटिक स्टोरेज वाले वेरिएबल को स्पष्ट रूप से घोषित करने देता है। ऑटो स्टोरेज क्लास ब्लॉक के अंदर घोषित वेरिएबल्स के लिए डिफ़ॉल्ट है। एक वेरिएबल x जिसका ऑटोमैटिक स्टोरेज है, उस ब्लॉक से बाहर निकलने पर हटा दिया जाता है जिसमें x घोषित किया गया था। आप ऑटो स्टो

  1. - C++ सर्वश्रेष्ठ प्रोग्रामिंग भाषा क्यों है?

    C++ को एक बहुत शक्तिशाली भाषा के रूप में जाना जाता है। C++ आपको कंप्यूटर संसाधनों का उपयोग कैसे करें, इस पर बहुत नियंत्रण देता है, इसलिए सही हाथों में, इसकी गति और संसाधनों को सस्ते में उपयोग करने की क्षमता अन्य भाषाओं को पार करने में सक्षम होनी चाहिए। C++ के प्रदर्शन के कारण, इसका उपयोग अक्सर गेम इ

  1. - Java में कंस्ट्रक्टर का नाम क्लास के नाम के समान क्यों होता है?

    हर क्लास ऑब्जेक्ट को उसी new कीवर्ड का उपयोग करके बनाया जाता है, इसलिए इसमें उस क्लास के बारे में जानकारी होनी चाहिए जिसका ऑब्जेक्ट इसे बनाना है। इस कारण से, कंस्ट्रक्टर का नाम क्लास के नाम के समान होना चाहिए। उदाहरण class MyConstructor { public MyConstructor() { System.out.println(The