"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावा के \"instanceof\" ऑपरेटर के C++ समतुल्य कैसे प्राप्त करें?

जावा के \"instanceof\" ऑपरेटर के C++ समतुल्य कैसे प्राप्त करें?

2024-11-17 को प्रकाशित
ब्राउज़ करें:517

How to Achieve the C   Equivalent of Java\'s \

जावा के उदाहरण के बराबर सी कैसे प्राप्त करें

जावा में, "इंस्टेंसऑफ" ऑपरेटर आपको यह निर्धारित करने की अनुमति देता है कि कोई वस्तु किसी से संबंधित है या नहीं विशिष्ट वर्ग या इंटरफ़ेस। सी में, इस कार्यक्षमता को प्राप्त करने के लिए कई तरीके हैं। इसके लिए आपको आवश्यक शीर्षलेख शामिल करने होंगे:

#include #include

और फिर आप इसका उपयोग करके एक डायनामिक कास्ट कर सकते हैं:

#include 
#include 
ध्यान दें कि इस दृष्टिकोण के लिए आपके कंपाइलर में आरटीटीआई समर्थन सक्षम होना आवश्यक है।

if(NewType* v = dynamic_cast(old)) {
   // old was safely casted to NewType
   v->doSomething();
}

एक अन्य तरीका वर्चुअल फ़ंक्शंस का उपयोग करना है। आप बेस क्लास में वर्चुअल फ़ंक्शन को परिभाषित कर सकते हैं और व्युत्पन्न कक्षाओं में इसे ओवरराइड कर सकते हैं। फिर, आप किसी ऑब्जेक्ट के वर्चुअल फ़ंक्शन को कॉल करके उसके गतिशील प्रकार की जांच कर सकते हैं:

क्लास बेस { जनता: आभासी शून्य कुछ करो() {} }; वर्ग व्युत्पन्न: सार्वजनिक आधार { जनता: शून्य कुछ करें() ओवरराइड {} }; ... यदि(ऑटो* व्युत्पन्न = डायनामिक_कास्ट(पुराना)) { व्युत्पन्न->कुछ करो(); }

टाइप स्विच

class Base {
public:
    virtual void doSomething() {}
};

class Derived : public Base {
public:
    void doSomething() override {}
};

...

if(auto* derived = dynamic_cast(old)) {
    derived->doSomething();
}

if(old.IsSameAs(typeid(NewType))) { //पुराने को सुरक्षित रूप से न्यूटाइप में डाल दिया गया न्यूटाइप* वी = स्टेटिक_कास्ट(पुराना); v->कुछ करो(); }

विचार

if(old.IsSameAs(typeid(NewType))) {
    // old was safely casted to NewType
    NewType* v = static_cast(old);
    v->doSomething();
}
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3