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

244
01 июня 2018, 02:30

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

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

Answer 1

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

В C++ же, тип данных, значения которого может принимать переменная, определяется статически (во время написания программы).

Поэтому наличие механизма RTTI (в частности dynamic cast), проводящего некоторые проверки типов во время выполнения, не делает C++ языком с динамической типизацией.

Answer 2

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

READ ALSO
Работа пользовательского класса string

Работа пользовательского класса string

Ввод строки работает правильно вне switch, если хочу вызвать функцию через switch ,то после ввода строки зависает с сообщением "Прекращена работа

253
Инъекция DLL в свой процесс C++

Инъекция DLL в свой процесс C++

Учу С++Интересен способ инъекции DLL в свой процесс

224
Как преобразовать тип bool в enum?

Как преобразовать тип bool в enum?

Есть перечисление:

256
Можно ли как-либо обратиться к терминалу на mac os при помощи языка c++

Можно ли как-либо обратиться к терминалу на mac os при помощи языка c++

Например ввести команду ls, и считать список файлов в директории

183