首页 > 后端开发 > C++ > 如何在 C 语言中在运行时确定对象的类型?

如何在 C 语言中在运行时确定对象的类型?

Patricia Arquette
发布: 2024-12-13 19:50:16
原创
354 人浏览过

How Can I Determine an Object's Type at Runtime in C  ?

在 C 中查找对象的类型

可以使用dynamic_cast 确定对象的类型。此方法动态地将数据从一种指针或引用类型转换为另一种,并在运行时验证转换的有效性。

用法:

转换为指针类型:

TYPE* dynamic_cast<TYPE*>(object);
登录后复制

投射到参考类型:

TYPE& dynamic_cast<TYPE&>(object);
登录后复制

结果:

  • 如果转换成功并且对象属于所需类型,则结果是指向的指针或引用对象。
  • 如果转换不成功(对象不是所需的类型),则指针转换的结果为 NULL,并且对于引用转换抛出 bad_cast 异常。

运行时类型信息 (RTTI)

Dynamic_cast 依赖于 RTTI,它仅可用于多态类(即具有至少一个虚拟方法的类)。实际上,这并不是一个重要的限制,因为大多数基类都有一个虚拟析构函数,用于在派生类中进行正确的清理。

示例:

这里是一个使用的示例Dynamic_cast 检查对象是否属于 B 类型:

class A {};
class B : public A {
public:
    void b_function() {}
};

void func(A& obj) {
    B* b_ptr = dynamic_cast<B*>(&obj);
    if (b_ptr != nullptr) {
        b_ptr->b_function(); // Object is of type B
    } else {
        std::cout << "Object is not of type B" << std::endl;
    }
}
登录后复制

以上是如何在 C 语言中在运行时确定对象的类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板