c – 多态指针的typeid?

我不明白为什么指针不是多态类型,因为我们可以使用指向派生类的基类指针来调用派生类的虚函数.这表明在运行时,系统可以确定指针是否是多态的,不是吗?

(这是typeid for polymorphic types的后续问题)

解决方法:

您的问题会受到错误使用术语的影响. C语言对指针本身和这些指针所指向的对象进行了非常明确的区分.指针类型不是多态的.指针本身没有任何多态性.真正多态的是指针指向的类型.当指针指向多态类型时,我们经常[非正式地]将其称为多态指针(仅作为“指向多态类型的指针”的简写).但是当谈到像typeid这样的东西时,他们会非常正式地看待事物.对于typeid指针类型永远不会是多态的.

并且编译器在运行时不确定指针是否是多态的.这种简单的区别总是在编译时立即知道.同样,如果指针被声明为指向多态类型的指针,则该指针称为多态.多态类型是一种包含虚函数(直接或间接)的类类型.显然,多态的属性是类型的纯编译时属性.

在这种情况下,在运行时确定的唯一事情是指定对象在给定时刻具有哪种特定类型.

上一篇:c – 从vector :: iterator转换为vector :: iterator


下一篇:c – 将基类型的STL容器转换为派生类型是否可以?