CoolInterview.com - World's Largest Collection of Interview Questions GET FREE MAGAZINE FROM SAP NOW!
Home| Ask Questions| About Us| Feedback| Contact Us|
 Interview Questions  
 Our Services  

Get 9,000 Interview Questions & Answers in an eBook.


  • 9500+ Pages
  • 9000 Question & Answers
  • All Tech. Categories
  • 14 MB Content

    Get it now !!



    Send your Resume to 6000 Companies

  • COOLINTERVIEW.COM LANGUAGES C++ DETAILS



    Question :
    What is RTTI?





    Answer :
    RTTI stands for the Run Time Type Identification.

    Operator dynamic_cast is used in RTTI.It cast a derieved class object into base class and vice versa at run time.

    base b1;

    derived d1;

    if(b1 == dynamic_cast <base> (d1))

    .....................

    else

    ..................


    RTTI stands for the Run Time Type Identification.

    Generally Non Polymorphic Languages like C does not need RTTI. But in case of C++ it is needed because of Late binding associated decisions.

    typeid is the operator used for identifying the type of object stored in the pointer.

    Below example clears the point of used RTTI.

    class Mammal {
    public:
    virtual bool lays_eggs() { return false; } // Mammal is polymorphic
    // ...
    };
    class Cat: public Mammal {
    public:
    // ...
    };
    class Platypus: public Mammal {
    public:
    bool lays_eggs() { return true; }
    // ...
    };
    class Dog: public Mammal {
    public:
    // ...
    };

    // A factory for objects derived from Mammal.
    Mammal *factory()
    {
    switch(rand() % 3 ) {
    case 0: return new Dog;
    case 1: return new Cat;
    case 2: return new Platypus;
    }
    return 0;
    }


    int main()
    {
    Mammal *ptr; // pointer to base class
    int i;
    int c=0, d=0, p=0;

    // generate and count objects
    for(i=0; i<10; i++) {
    ptr = factory(); // generate an object

    cout << "Object is " << typeid(*ptr).name();
    cout << endl;


    // count it
    if(typeid(*ptr) == typeid(Dog)) d++;
    if(typeid(*ptr) == typeid(Cat)) c++;
    if(typeid(*ptr) == typeid(Platypus)) p++;
    }

    cout << endl;
    cout << "Animals generated:
    ";
    cout << " Dogs: " << d << endl;
    cout << " Cats: " << c << endl;
    cout << " Platypuses: " << p << endl;

    return 0;
    }



     Posted by: Kalyan Chakravarthy Yimani    

    Contact Author  Contact Author

    © CoolInterview.com
    Today's Special: Get Free Magazine from SAP now!

    A D V E R T I S E M E N T






    If you have the better answer, then send it to us. We will display your answer after the approval.
    Name :*
    Email Id :*
    Answer :*
    Verification Code Code Image - Please contact webmaster if you have problems seeing this image code Not readable? Load New Code
    Process Verification  Enter the above shown code:*
    Inform me about updated answers to this question

       


    Rate the above answer. Help us to know about the answer.
    Category C++ Interview Questions
    Rating (3.5) By 2 users
    Added 7/19/2006
    Views 3108
    Rate it!
    Free Offers 300 Free Magazines for you. No credit card required. No Shipping Charges. Absolutely Free for 1 Year.

    Please Note: We keep on updating better answers to this site. Subscribe to our newsletter to get notified when better answer is posted.

    Notify me when better answer is posted!
    Email:



    View ALL C++ Interview Questions


    Sponsored Links  

    Google Search

    Google

    CoolInterview.com is a part of Vyom Network.
    Copyright ©2003-2008 Vyom Technosoft Pvt. Ltd., All Rights Reserved. Privacy Policy
    Page URL: http://www.coolinterview.com/interview/6157/Default.asp?cachecommand=bypass


    Download Yahoo Messenger | Placement Papers| FREE SMS | ASP .Net Tutorial

    0.77