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++ . में ऑटो स्टोरेज क्लास

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

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

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

  1. कंस्ट्रक्टर का नाम जावा में क्लास के नाम के समान क्यों है?

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