Не существует статических или динамических указателей .
Но есть статические и динамические типы .
Обычно переменные и выражения имеют только один тип, который также называется статическим типом .
Полиморфные экземпляры классов дополнительно имеют динамический тип .
Если выражение относится к экземпляру базового класса, расположенному внутри экземпляра производного класса, то динамический тип выражения - это производный класс.
Пример должен прояснить это:
Account *a = new Account();
Account *b = new Current();
Account *c = new Deposit();
Здесь и *a
, *b
и *c
имеют одинаковый статический тип - Account
. Статический тип не зависит от того, на что указывают эти указатели, а только от того, как они были объявлены.
С другой стороны, динамические типы *a
, *b
и *c
равны Account
, Current
и Deposit
соответственно. Динамический тип зависит от того, на что действительно указывают указатели.