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

C++ में RTTI (रन-टाइम टाइप इंफॉर्मेशन)

इस खंड में हम देखेंगे कि C++ में RTTI (रनटाइम टाइप इंफॉर्मेशन) क्या है। सी ++ में आरटीटीआई एक तंत्र है, जो रनटाइम के दौरान किसी ऑब्जेक्ट के डेटाटाइप के बारे में जानकारी को उजागर करता है। यह सुविधा तभी उपलब्ध हो सकती है जब कक्षा में कम से कम एक वर्चुअल फ़ंक्शन हो। यह किसी ऑब्जेक्ट के प्रकार को निर्धारित करने की अनुमति देता है जब प्रोग्राम निष्पादित हो रहा हो।

निम्नलिखित उदाहरण में पहला कोड काम नहीं करेगा। यह 'क्लास व्युत्पन्न*' टाइप करने के लिए "डायनेमिक_कास्ट बेस_प्टर (बेस* प्रकार का) नहीं कर सकता" जैसी त्रुटि उत्पन्न करेगा (स्रोत प्रकार बहुरूपी नहीं है)"। यह त्रुटि इसलिए आती है क्योंकि इस उदाहरण में कोई वर्चुअल फ़ंक्शन नहीं है।

उदाहरण कोड

#include<iostream>
using namespace std;
class Base { };
class Derived: public Base {};
int main() {
   Base *base_ptr = new Derived;
   Derived *derived_ptr = dynamic_cast<Derived*>(base_ptr);
   if(derived_ptr != NULL)
      cout<<"It is working";
   else
      cout<<"cannot cast Base* to Derived*";
   return 0;
}

अब वर्चुअल विधि जोड़ने के बाद यह काम करेगा।

उदाहरण कोड

#include<iostream>
using namespace std;
class Base {
   virtual void function() {
      //empty function
   }
};
class Derived: public Base {};
int main() {
   Base *base_ptr = new Derived;
   Derived *derived_ptr = dynamic_cast<Derived*>(base_ptr);
   if(derived_ptr != NULL)
      cout<<"It is working";
   else
      cout<<"cannot cast Base* to Derived*";
   return 0;
}

आउटपुट

It is working

  1. सी ++ में संरचना बनाम वर्ग

    C++ में संरचना और वर्ग मूल रूप से समान हैं। लेकिन कुछ मामूली अंतर हैं। ये अंतर नीचे की तरह हैं। वर्ग के सदस्य डिफ़ॉल्ट रूप से निजी होते हैं, लेकिन संरचना के सदस्य सार्वजनिक होते हैं। अंतर देखने के लिए आइए इन दो कोडों को देखें। उदाहरण कोड #include <iostream> using namespace std; class my_class

  1. C++ में आधार और व्युत्पन्न वर्ग अपवादों को पकड़ना

    बेस और व्युत्पन्न वर्ग दोनों के लिए एक अपवाद को पकड़ने के लिए हमें बेस क्लास से पहले व्युत्पन्न वर्ग के कैच ब्लॉक को रखना होगा। अन्यथा, व्युत्पन्न वर्ग के पकड़ ब्लॉक तक कभी नहीं पहुंचा जा सकेगा। एल्गोरिदम Begin    Declare a class B.    Declare another class D which inherits class

  1. सी ++ में स्थानीय कक्षा

    किसी फ़ंक्शन के अंदर घोषित एक वर्ग को C++ में स्थानीय वर्ग के रूप में जाना जाता है क्योंकि यह उस फ़ंक्शन के लिए स्थानीय होता है। स्थानीय वर्ग का एक उदाहरण इस प्रकार दिया गया है। #include<iostream> using namespace std; void func() {    class LocalClass {    }; } int main()