কম্পিউটার টিউটোরিয়াল

সি++-এ RTTI (Run-time Type Information) প্রোগ্রাম

এই সেকশনে, আমরা দেখব সি++-এ RTTI (Runtime Type Information) কী। সি++-এ RTTI হল একটি মেকানিজম, যা রানটাইমে একটি অবজেক্টের ডেটা টাইপ সম্পর্কে তথ্য প্রকাশ করে। এই ফিচারটি তখনই উপলব্ধ হয় যখন ক্লাসে কমপক্ষে একটি ভার্চুয়াল ফাংশন (virtual function) থাকে। এটি প্রোগ্রাম এক্সিকিউশনের সময় একটি অবজেক্টের টাইপ নির্ধারণ করতে দেয়।

নিচের উদাহরণে, প্রথম কোডটি কাজ করবে না। এটা একটি এরর জেনারেট করবে যেমন "cannot dynamic_cast base_ptr (of type Base*) to type 'class Derived*' (Source type is not polymorphic)"। এই এরর আসে কারণ এই উদাহরণে কোনো ভার্চুয়াল ফাংশন নেই।

উদাহরণ কোড (ভার্চুয়াল ফাংশন ছাড়া)

#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() {       //খালি ফাংশন    } }; 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++-এ বেস ও ডেরাইভড ক্লাস এক্সেপশন ক্যাচ করা

  2. C++-এ লোকাল ক্লাস

  3. স্ট্রাকচারে ছাত্রের তথ্য সংরক্ষণ করার C++ প্রোগ্রাম

  4. রিকার্সন ব্যবহার করে সংখ্যার ঘাত (Power) বের করার C++ প্রোগ্রাম