RTTI stands for RunTime Type Identification. Commonly two ways to achieve it.

Dynamic cast

class Base {};
class Derived : public Base {};
 
void foo(Base* b)
{
    Derived* d = dynamic_cast<Derived*>(b);
    if (d != nullptr)
    {
        // b is actually points to a Derived object.
    }
}

Typeid

typeid is a operator in c++, which gives the type_info struct to the given type. See more in cppreference.

Summary

Dynamic cast needs to work in polymorphic. Once use RTTI, every type will contain a extra info struct type_info.

Pass the -fno-rtti to the compiler to disable this, i.e., RTTI incurs extra cost.

See also 继承.