Dynamic Type Versus Static Type

Dynamic Type Versus Static Type

The type of the most derived object to which an expression refers is said to be the dynamic type of that expression. For example, if p is declared as a pointer to class B and it’s actually pointing to an object of class D (when D is derived from B), the dynamic type of the expression “*p” is “D”. References are treated similarly. For example:

   void func( B * p) // the static type of "*p" is "B"  {    D d = *p;  // however, the dynamic type of "*p" is "D"  }  int main  {    D d;    func( &d);  }

The dynamic type of an expression is determined at runtime whereas its static type is determined at compile-time.


Share the Post: