इस खंड में हम देखेंगे कि 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