获取void指针的typeid是在C++中通过RTTI(Run-Time Type Information)来实现的。RTTI是C++的一种特性,允许在运行时获取对象的类型信息。要获取void指针的typeid,需要先将其转换为实际的对象类型,然后使用typeid操作符来获取类型信息。
以下是一个示例代码:
#include<iostream>
#include <typeinfo>
class Base {
public:
virtual ~Base() {}
};
class Derived : public Base {};
int main() {
Base* b = new Derived();
void* p = dynamic_cast<void*>(b);
const std::type_info& t = typeid(*static_cast<Base*>(p));
std::cout << t.name()<< std::endl;
delete b;
return 0;
}
在这个示例中,我们首先创建了一个Base类的派生类Derived,并且在Base类中添加了一个虚拟析构函数,以便在运行时正确地进行类型转换。然后我们创建了一个Base类的指针,并将其指向一个Derived类的实例。接着我们将该指针转换为void*类型,并使用typeid操作符获取该指针所指向对象的类型信息。最后我们将类型信息打印出来,并释放内存。
需要注意的是,在使用typeid操作符之前,需要将void指针转换回原始的对象类型,否则会导致编译错误。在这个示例中,我们使用了static_cast来将void指针转换回Base*类型,然后使用typeid操作符获取类型信息。
总之,要获取void*指针的typeid,需要先将其转换为实际的对象类型,然后使用typeid操作符来获取类型信息。在实际应用中,可以根据获取到的类型信息来实现不同的逻辑处理。
云+社区技术沙龙[第10期]
云+社区技术沙龙[第21期]
中国数据库前世今生
高校公开课
136届广交会企业系列专题培训
Techo Youth高校公开课
小程序云开发官方直播课(应用开发实战)
腾讯云数据库TDSQL(PostgreSQL版)训练营
领取专属 10元无门槛券
手把手带您无忧上云