什么是多态类型

多态类型是指声明或者继承了至少一个虚函数的类型

对于多态类型,一些信息必须延迟到运行时才可以确定,例如它的实际类型、所调用的虚函数的地址等 类型B继承了声明有虚函数的类型A,因此AB都是多态类型。
struct A
{
    virtual void foo() {} // 声明虚函数
};

struct B : public A
{
    // 隐式继承了虚函数
};

...

B b{};
A& a_rb = b; // 将b绑定到A的左值引用a_rb上

typeid(decltype(a_rb)).name(); // decltype产生的是编译时即可确定的声明类型,因此为A
typeid(a_rb).name();  // 由于a_rb是多态类型的glvalue,typeid在运行时计算,因此为B

a_rb.foo();  // 这里调用的是B中的foo,其函数地址是运行时确定的
sizeof(b);   // 这里的sizeof是编译器决定的,通常为8 (64位)
上一篇:关于分页功能的实现


下一篇:罗丹明标记盐酸去氧肾上腺素|RB-葡萄糖氧化酶-齐岳科研