C++ 是否有一个C++;函数来比较变量的类型?

C++ 是否有一个C++;函数来比较变量的类型?,c++,C++,在Python中,要比较变量的类型,有一个函数“type”,例如:a=10和b=“abc”,type(a)!=类型(b)。C++中有什么类似的东西吗?我有一个基类对象的向量,我想看看该向量的元素是否已声明为派生类。是的,它被称为typeID 假设您有一个继承自类B的类D,以及一个类型为D的对象。但由于某种原因,您只能将aB*连接到该对象 然后dynamic\u cast(object)计算为指向同一对象的D*。有一个运行时检查,以确保转换是安全的;如果您试图将对象强制转换为派生类型,而该派生类

在Python中,要比较变量的类型,有一个函数“type”,例如:a=10和b=“abc”,type(a)!=类型(b)。C++中有什么类似的东西吗?我有一个基类对象的向量,我想看看该向量的元素是否已声明为派生类。

是的,它被称为typeID


假设您有一个继承自
类B
类D
,以及一个
类型为
D
对象。但由于某种原因,您只能将a
B*
连接到该对象

然后
dynamic\u cast(object)
计算为指向同一对象的
D*
。有一个运行时检查,以确保转换是安全的;如果您试图将对象强制转换为派生类型,而该派生类型不是从中继承的,则会返回一个空指针

您还可以
dynamic_cast
引用,如果失败,将引发
std::bad_cast
异常


如果要执行这些类型的运行时强制转换,您真正需要的是
std::vector
,而不是
std::vector
。如果您实际声明了一个
std::vector
,那么它们都不能是
D
。但是,<代码> B*<代码>可以指向一个普通的旧代码< B/COD>或任何<代码> B<代码>派生类型。C++中的

< P>,变量是静态类型的。
bool eq\u typed=std::是否相同;

可能有一种方法可以创建另一个对象的属性。我有一个基类对象的向量,如果你的向量不是存储指针,那么里面就不会有任何派生类对象了?这个问题包括显示声明和如何使用声明的代码。这是否回答了您的问题?这是一个重复的问题,我看到了一个与此类似的问题,但找不到确切的问题。@Ender\u是吗?可能需要注意的是,
typeid
是语言中的运算符,而不是函数。这不适用于继承、派生类(和对象)与它们的基类有不同的typeid。您是否有具体的理由建议使用
std::vector
而不是
std::vector
?@Oebele技术上,std::reference\u warpper
是为这些东西引入的。
if (typeid(a) == typeid(int()))
//code here