Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

Типизация языка С++

#cpp #типизация


С++ — это статически типизированный язык. Я не могу понять, почему так, если, например,
понижающее приведение типов (dynamic cast, разумеется) в ветке наследования с полиморфным
родителем является проверкой типов во время выполнения программы.

То есть если вкратце, то меня смущает то, что все называют этот ЯП статически типизированным,
в то время, когда тут есть элементы динамической типизации.
    


Ответы

Ответ 1



Насколько я понимаю, в языках с динамической типизацией (например, Python, JavaScript, Lisp ..., не говоря уж о разных Shell-ах) один и тот же идентификатор (переменная) может иметь значения разных типов во время выполнения программы. В C++ же, тип данных, значения которого может принимать переменная, определяется статически (во время написания программы). Поэтому наличие механизма RTTI (в частности dynamic cast), проводящего некоторые проверки типов во время выполнения, не делает C++ языком с динамической типизацией.

Ответ 2



Наверное, потому что тип наследника ЯВЛЯЕТСЯ типом родителя, так что проверка допустимости типов все-таки выполняется во время компиляции, т.е. является статической.

Комментариев нет:

Отправить комментарий