C++ typeid运算符介绍

在 C++ 中,typeid() 是一个运算符,用于获取表达式的类型信息。typeid() 运算符在 C++ 中是一个强大的工具,可以用于获取对象的类型信息、类型比较、多态类型判断、异常处理以及类型转换安全检查等场景中。

1. 类型比较:

可以使用 typeid() 来比较两个类型是否相同。

if (typeid(obj1) == typeid(obj2)) {
    // 对象 obj1 和 obj2 的类型相同
}

2. 多态类型判断:

可以使用 typeid() 来判断对象是否属于某个特定的派生类类型。

Base* base_ptr = new Derived();
if (typeid(*base_ptr) == typeid(Derived)) {
    // base_ptr 所指对象的类型是 Derived 类型
}

3. 异常处理:

在某些情况下,typeid() 可以用于异常处理,例如在捕获异常时根据类型做出不同的处理。

try {
    // 可能抛出不同类型的异常
} catch (const std::exception& e) {
    if (typeid(e) == typeid(std::runtime_error)) {
        // 处理 runtime_error 类型的异常
    } else if (typeid(e) == typeid(std::logic_error)) {
        // 处理 logic_error 类型的异常
    } else {
        // 其他类型的异常处理
    }
}

4. 类型转换安全检查:

在某些需要类型转换的场景下,可以使用 typeid() 进行安全检查,确保类型转换的合法性。

Derived* derived_ptr = dynamic_cast(base_ptr);
if (derived_ptr && typeid(*base_ptr) == typeid(Derived)) {
    // base_ptr 指向 Derived 类型的对象
    // 并且类型转换成功
}

你可能感兴趣的:(c++,开发语言)