Lo que creo es que el tipo dinámico significa objeto dinámicamente asignado utilizando new
. En el siguiente caso, ¿dice que p
apunta al tipo dinámico o al tipo de objeto estático? En estándar, no dice que el tipo dinámico sea un objeto dinámico.¿Qué es el tipo dinámico de objeto?
1.3.3 - El tipo del objeto más derivada (1,8) a la que el lvalue denota por una expresión lvalue refiere. [Ejemplo: si un puntero (8.3.1) p cuyo tipo estático es "apuntador a la clase B" apunta a un objeto de la clase D, derivado de B (cláusula 10), el tipo dinámico de la expresión * p es "D." Las referencias (8.3.2) son tratadas de manera similar. ]
También lo que lo hace la siguiente cita significa
El tipo dinámico de una expresión rvalue es su tipo estático
class Base {
virtual void foo(){}
};
class Derived : public Base {
void foo(){}
};
int main()
{
Derived d;
Base *p = &d;
}
+1 Claro, conciso, buen ejemplo. – Lou
+1, pero creo que podría hacer que el ejemplo sea aún más claro al agregar un ejemplo que no utiliza nada nuevo. –
¿No bastaría 'A & k = B();'? – arne