В чем отличие между статической/динамической типизацией и явной/неявной?
Явная типизация - это вариант статической типизации, при котором требуется явно объявлять типы переменных. При неявной статической типизации решение о типе принимается компилятором на основе размещаемых в переменной данных без явного указания типа (auto в C++).
если явно задаем тип, это и есть статическая типизация
Как раз таки для объектов, у которых есть предки и потомки, динамическая типизация во время выполнения будет решать, какой виртуальный метод вызвать, несмотря на то, что класс был указан заранее.