我认为动态类型是指使用new
动态分配的对象。在下面的情况下,你说p
指向动态类型还是静态类型的对象?在标准中,它并没有说动态类型是动态对象。什么是动态类型的对象
1.3.3 - 左值表达式将左值表示为 的最大派生对象(1.8)的类型引用。 [示例:如果指针(8.3.1)p的静态类型是“指向类B”的指针指向类D D的对象,从B(条款10)派生,则动态类型的表达式* p 是“D”。参考文献(8.3.2)的处理方式相似。 ]
而且这是什么下面的报价意味着
动态类型右值表达的是它的静态类型
class Base {
virtual void foo(){}
};
class Derived : public Base {
void foo(){}
};
int main()
{
Derived d;
Base *p = &d;
}
+1清晰,简洁,很好的例子。 – Lou
+1,但我想你可以通过添加一个根本不使用新的例子来更清楚地说明这个例子。 –
'A&k = B();'是否就够了? – arne