С++ — это статически типизированный язык. Я не могу понять, почему так, если, например, понижающее приведение типов (dynamic cast, разумеется) в ветке наследования с полиморфным родителем является проверкой типов во время выполнения программы.
То есть если вкратце, то меня смущает то, что все называют этот ЯП статически типизированным, в то время, когда тут есть элементы динамической типизации.
Насколько я понимаю, в языках с динамической типизацией (например, Python, JavaScript, Lisp ..., не говоря уж о разных Shell-ах) один и тот же идентификатор (переменная) может иметь значения разных типов во время выполнения программы.
В C++ же, тип данных, значения которого может принимать переменная, определяется статически (во время написания программы).
Поэтому наличие механизма RTTI (в частности dynamic cast
), проводящего некоторые проверки типов во время выполнения, не делает C++ языком с динамической типизацией.
Наверное, потому что тип наследника ЯВЛЯЕТСЯ типом родителя, так что проверка допустимости типов все-таки выполняется во время компиляции, т.е. является статической.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Ввод строки работает правильно вне switch, если хочу вызвать функцию через switch ,то после ввода строки зависает с сообщением "Прекращена работа
Например ввести команду ls, и считать список файлов в директории