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

C स्ट्रक्चर और C++ स्ट्रक्चर का अंतर


C++ स्ट्रक्चर (struct) क्लास के समान हैं, केवल डिफ़ॉल्ट एक्सेस स्पेसिफायर अलग है।

तुलना तालिका

विशेषताC structC++ struct
मेंबर फंक्शन्सनहींहाँ
डिफ़ॉल्ट एक्सेसpublic (केवल विकल्प)public (private/protected भी संभव)
डायरेक्ट इनिशियलाइजेशननहीं (C99 डेजिग्नेटेड इनिट से अलग)हाँ (कंस्ट्रक्टर, एग्रीगेट इनिट)
कीवर्ड आवश्यकstruct टाइप नाम में जरूरीवैकल्पिक (MyStruct s;)
स्टेटिक मेंबर्सनहींहाँ
खाली स्ट्रक्चर आकार0 (कुछ कंपाइलर्स 1)1 (कम से कम 1 बाइट)
डेटा हाइडिंगनहींहाँ (private/protected)
इनहेरिटेंसनहींहाँ
वर्चुअल फंक्शन्सनहींहाँ

उदाहरण: डिफ़ॉल्ट एक्सेस अंतर

// C++ कोड
#include <iostream>
using namespace std;

class MyClass {
    int x = 10;  // डिफ़ॉल्ट private
};

struct MyStruct {
    int x = 10;  // डिफ़ॉल्ट public
};

int main() {
    MyClass c;  // c.x एक्सेसिबल नहीं (एरर)
    MyStruct s; // s.x एक्सेसिबल
    cout << s.x;  // 10
    return 0;
}

उदाहरण: इनहेरिटेंस डिफ़ॉल्ट एक्सेस

class Base { public: int x = 10; };

class DerivedClass : Base { };      // डिफ़ॉल्ट private इनहेरिटेंस
struct DerivedStruct : Base { };    // डिफ़ॉल्ट public इनहेरिटेंस

int main() {
    DerivedClass dc;   // dc.x एक्सेसिबल नहीं
    DerivedStruct ds;  // ds.x एक्सेसिबल
    return 0;
}

सर्वोत्तम अभ्यास

  • C++ में: डेटा-ओनली एग्रीगेट्स के लिए struct, इनवेरिएंट्स/बिहेवियर वाले टाइप्स के लिए class उपयोग करें।
  • स्पष्ट public:, private: लेबल्स लिखें।
  • C में: struct केवल डेटा कंटेनर है।
  1. - C++ में std::vector और std::array के बीच अंतर

    निम्नलिखित vector और array के बीच अंतर हैं −Vector एलिमेंट्स को स्टोर करने के लिए एक सीक्वेंशियल कंटेनर है और इंडेक्स आधारित नहीं है।Array एक ही प्रकार के एलिमेंट्स का एक फिक्स्ड-साइज़ सीक्वेंशियल कलेक्शन स्टोर करता है और यह इंडेक्स आधारित है।Vector प्रकृति में डायनामिक है इसलिए, एलिमेंट्स के

  1. - C++ में नेमस्पेस और क्लास के बीच अंतर

    इस सेक्शन में हम देखेंगे कि C++ में नेमस्पेस और क्लास के बीच क्या अंतर हैं। नेमस्पेस और क्लास दो अलग-अलग कॉन्सेप्ट्स हैं। क्लासेस डेटा टाइप्स हैं। क्लासेस मूलतः स्ट्रक्चर्स का एक्सटेंडेड वर्जन हैं। क्लासेस डेटा मेंबर्स और फंक्शन्स को मेंबर्स के रूप में समाहित कर सकते हैं, लेकिन नेमस्पेस वेरिएबल्स और

  1. - C++ में वर्चुअल फंक्शन और प्योर वर्चुअल फंक्शन के बीच अंतर

    निम्नलिखित तालिका वर्चुअल और प्योर वर्चुअल फंक्शन के बीच अंतर दिखाती है:वर्चुअल फंक्शनप्योर वर्चुअल फंक्शनवर्चुअल फंक्शन की क्लास में उनकी परिभाषा होती है।प्योर वर्चुअल फंक्शन की कोई परिभाषा नहीं होती।डिक्लेरेशन: virtual funct_name(parameter_list) {. . . . .};डिक्लेरेशन: virtual funct_name(parameter