এই বিভাগে, আমরা C++ এ RTTI (রানটাইম টাইপ ইনফরমেশন) কী তা দেখব। C++-এ RTTI হল একটি মেকানিজম, যা রানটাইমের সময় কোনো বস্তুর ডেটাটাইপ সম্পর্কে তথ্য প্রকাশ করে। এই বৈশিষ্ট্যটি শুধুমাত্র তখনই পাওয়া যাবে যখন ক্লাসে অন্তত একটি ভার্চুয়াল ফাংশন থাকবে। এটি একটি বস্তুর ধরন নির্ধারণ করার অনুমতি দেয় যখন প্রোগ্রামটি কার্যকর হয়।
নিম্নলিখিত উদাহরণে, প্রথম কোড কাজ করবে না। এটি "ক্লাস ডিরাইভড*" (সোর্স টাইপ পলিমরফিক নয়) টাইপ করতে "ডাইনামিক_কাস্ট base_ptr (টাইপ বেস*) এর মতো একটি ত্রুটি তৈরি করবে"। এই ত্রুটিটি আসে কারণ এই উদাহরণে কোন ভার্চুয়াল ফাংশন নেই।
উদাহরণ কোড
#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