我认为动态类型意味着动态分配的对象使用new
. 在下面的情况下,你说是p
指向动态类型还是静态类型的对象?在标准中,它没有说动态类型是动态对象。
1.3.3 - 由左值表达式表示的左值所指的最派生对象 (1.8) 的类型。[示例:如果静态类型为“指向 B 类的指针”的指针 (8.3.1) p 指向从 B 派生的 D 类对象(第 10 条),则表达式 *p 的动态类型为“D 。” 参考文献(8.3.2)的处理方式类似。]
还有下面的引用是什么意思
右值表达式的动态类型是它的静态类型
class Base {
virtual void foo(){}
};
class Derived : public Base {
void foo(){}
};
int main()
{
Derived d;
Base *p = &d;
}