#cpp #типизация
С++ — это статически типизированный язык. Я не могу понять, почему так, если, например, понижающее приведение типов (dynamic cast, разумеется) в ветке наследования с полиморфным родителем является проверкой типов во время выполнения программы. То есть если вкратце, то меня смущает то, что все называют этот ЯП статически типизированным, в то время, когда тут есть элементы динамической типизации.
Ответы
Ответ 1
Насколько я понимаю, в языках с динамической типизацией (например, Python, JavaScript, Lisp ..., не говоря уж о разных Shell-ах) один и тот же идентификатор (переменная) может иметь значения разных типов во время выполнения программы. В C++ же, тип данных, значения которого может принимать переменная, определяется статически (во время написания программы). Поэтому наличие механизма RTTI (в частности dynamic cast), проводящего некоторые проверки типов во время выполнения, не делает C++ языком с динамической типизацией.Ответ 2
Наверное, потому что тип наследника ЯВЛЯЕТСЯ типом родителя, так что проверка допустимости типов все-таки выполняется во время компиляции, т.е. является статической.
Комментариев нет:
Отправить комментарий