Я думаю, что динамический тип означает динамически выделенный объект с помощью new
. В следующем случае, скажем, p
указывает на динамический тип или статический тип объекта? В стандарте он не говорит о динамическом типе, являющемся динамическим объектом.
1.3.3 - Тип самого производного объекта (1.8), которому обозначается lvalue по выражению lvalue. [Пример: если указатель (8.3.1) p static type - "указатель на класс 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;
}