typeid operator in C++ with Examples

typeid is an operator in C++.

  • It is used where the dynamic type or runtime type information of an object is needed.
  • It is included in the <typeinfo> library. Hence inorder to use typeid, this library should be included in the program.
  • The typeid expression is an lvalue expression.

Syntax:

typeid(type);
OR
typeid(expression);

Parameters: typeid operator accepts a parameter, based on the syntax used in the program:

  • type: This parameter is passed when the runtime type information of a variable or an object is needed. In this, there is no evaluation that needs to be done inside type and simply the type information is to be known.
  • expression: This parameter is passed when the runtime type information of an expression is needed. In this, the expression is first evaluated. Then the type information of the final result is then provided.

Return value: This operator provides the runtime type information of the specified parameter and hence that type information is returned, as a reference to an object of class type_info.

Usage: typeid() operator is used in different way according to the operand type.



  1. When operand is a variable or an object.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // C++ program to show the use of typeid operator
      
    #include <iostream>
    #include <typeinfo>
    using namespace std;
      
    int main()
    {
        int i, j;
        char c;
      
        // Get the type info using typeid operator
        const type_info& ti1 = typeid(i);
        const type_info& ti2 = typeid(j);
        const type_info& ti3 = typeid(c);
      
        // Check if both types are same
        if (ti1 == ti2)
            cout << "i and j are of"
                 << " simiar type" << endl;
        else
            cout << "i and j are of"
                 << " different type" << endl;
      
        // Check if both types are same
        if (ti2 == ti3)
            cout << "j and c are of"
                 << " simiar type" << endl;
        else
            cout << "j and c are of"
                 << " different type" << endl;
      
        return 0;
    }

    chevron_right

    
    

    Output:

    i and j are of simiar type
    j and c are of different type
    
  2. When operand is an expression.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // C++ program to show the use of typeid operator
      
    #include <iostream>
    #include <typeinfo>
    using namespace std;
      
    int main()
    {
        int i = 5;
        float j = 1.0;
        char c = 'a';
      
        // Get the type info using typeid operator
        const type_info& ti1 = typeid(i * j);
        const type_info& ti2 = typeid(i * c);
        const type_info& ti3 = typeid(c);
      
        // Print the types
        cout << "ti1 is of type "
             << ti1.name() << endl;
      
        cout << "ti2 is of type "
             << ti2.name() << endl;
      
        cout << "ti3 is of type "
             << ti3.name() << endl;
      
        return 0;
    }

    chevron_right

    
    

    Output:

    ti1 is of type f
    ti2 is of type i
    ti3 is of type c
    

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.