क्लास और स्ट्रक्चर के बीच अंतर करने के लिए, हमें पहले यह समझना होगा कि डेटा को धारण करने और परिभाषित करने के संदर्भ में दोनों स्ट्रक्चर और क्लास समतुल्य प्रतीत होते हैं। ये दोनों अपने डेटा सदस्यों में कुछ डिफ़ॉल्ट मानों को परिभाषित और धारण कर सकते हैं। लेकिन यदि हम इसे इस संदर्भ से परे मानते हैं तो क्लास स्ट्रक्चर की तुलना में अधिक लचीलापन और कार्यक्षमता प्रदान करता है।
क्लास और स्ट्रक्चर के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।
| क्र.सं. | मुख्य बिंदु | क्लास | स्ट्रक्चर |
|---|---|---|---|
| 1 | डेटा प्रकार | क्लास में परिभाषित डेटा मेमोरी में रेफरेंस के रूप में संग्रहीत होता है और एक्सेस करने के लिए इसका एक विशेष पता होता है, इसलिए इसे रेफरेंस प्रकार कहा जा सकता है। | दूसरी ओर स्ट्रक्चर के मामले में डेटा सदस्य का मान सीधे स्टैक में या इनलाइन कंटेनिंग प्रकारों में संग्रहीत होता है इसलिए स्ट्रक्चर को वैल्यू प्रकार माना जाता है। |
| 2 | संग्रहण | ऊपर बताए गए बिंदु के अनुसार, क्लास के मामले में डेटा सदस्य रेफरेंस के रूप में संग्रहीत होते हैं और रेफरेंस प्रकार हीप मेमोरी पर आवंटित होते हैं। | दूसरी ओर स्ट्रक्चर में सीधा मान संग्रहीत होता है इसलिए वैल्यू प्रकार स्टैक मेमोरी पर आवंटित होते हैं। |
| 3 | कंस्ट्रक्टर | क्लास को कंस्ट्रक्टर के साथ-साथ डी-कंस्ट्रक्टर के साथ परिभाषित किया जा सकता है क्योंकि इसकी कार्यक्षमता लागू होती है। | दूसरी ओर स्ट्रक्चर में न तो कंस्ट्रक्टर हो सकता है और न ही डी-कंस्ट्रक्टर क्योंकि ऐसा कोई कार्यान्वयन प्रदान नहीं किया गया है। |
| 4 | इंस्टेंशिएट | कंस्ट्रक्टर के साथ पेश किए जाने के कारण क्लास new कीवर्ड की मदद से अपने इंस्टेंस को इंस्टेंशिएट कर सकता है। | दूसरी ओर स्ट्रक्चर new कीवर्ड के बिना इंस्टेंस बना सकता है। |
| 5 | विरासत | क्लास अपने पैरेंट क्लास से प्रॉपर्टीज इनहेरिट कर सकता है क्योंकि यह विरासत सुविधा का समर्थन करता है। | दूसरी ओर स्ट्रक्चर विरासत का समर्थन नहीं करता। |
| 6 | प्रोटेक्टेड मॉडिफायर | हम क्लास में परिभाषित डेटा सदस्यों के साथ प्रोटेक्टेड मॉडिफायर का उपयोग कर सकते हैं क्योंकि क्लास प्रोटेक्टेड मॉडिफायर का समर्थन करता है। | दूसरी ओर स्ट्रक्चर प्रोटेक्टेड मॉडिफायर का समर्थन नहीं करता। |