我认为动态类型意味着动态分配对象使用new.在下面的例子中,您是否p指出动态类型或静态类型的对象?在标准中,它没有说动态类型是动态对象.
1.3.3 - 由左值表达式表示的左值所指的最派生对象(1.8)的类型.[示例:如果指针(8.3.1)p的静态类型是"指向B类的指针"指向D类的对象,从B派生(第10节),则表达式*p的动态类型为"D" ".参考文献(8.3.2)的处理方式相似.]
以下引用的含义是什么呢?
rvalue表达式的动态类型是其静态类型
class Base {
virtual void foo(){}
};
class Derived : public Base {
void foo(){}
};
int main()
{
Derived d;
Base *p = &d;
}
Run Code Online (Sandbox Code Playgroud)