Я знал, что C++ - это статически типизированный язык, но новая спецификация C++ вводит новый синтаксис auto
, который может определять тип переменной сам по себе. Так может ли C++ по-прежнему считаться статически типизированным языком?Является ли C++ все еще считающимся статически типизированным языком?
ответ
Нет, это не делает язык C++ динамически типизированным. auto
- это метод определения типа времени компиляции. Полученный код точно такой же, как и без auto, и тип не может изменить время выполнения.
C++ по-прежнему является статически типизированным языком с автоматическим спецификатором типа, поскольку автоматически означает, что тип будет выведен компилятором во время компиляции. Вместо этого во время выполнения на динамически типизированных языках.
Так может ли C++ по-прежнему считаться статически типизированным языком?
Да потому, что этот фрагмент кода еще не скомпилируется:
auto i = 42; // 42 is an int -> i is an int
i = "test"; // can't assign a string to an int
Это не будет компилироваться ни на одном языке ... интерпретируется, да, но компилируется нет. Однако C++ имеет возможность быть динамичным. Вы даже можете создать динамический класс с инициализационными списками динамических объектов и получить динамический результат. У меня есть доказательство концепции, если вы заинтересованы. –
@ zackery.fix Это не имеет никакого отношения к интерпретации и компиляции. Это всего лишь стратегии реализации и не оказывают существенного влияния на семантику языка. –
@ zackery.fix здесь, интерпретатор C++: https://root.cern.ch/cling. Здесь, компилятор Lisp: http://www.clisp.org/. Это полностью ортогонально с динамической типизацией. –
- 1. Является ли C# статически типизированным или в основном статически типизированным?
- 2. В какой степени C++ является статически типизированным языком?
- 3. Является ли C# строго типизированным или слабо типизированным языком?
- 4. Является ли Haskell строго типизированным языком программирования?
- 5. Является ли PowerShell строго типизированным языком?
- 6. Является ли C++ свободным языком?
- 7. Является ли написание кода еще считающимся алгоритмическим представлением?
- 8. Рефакторинг с динамически типизированным языком
- 9. Является ли `qrefresh` считающимся вредным?
- 10. Является ли SID считающимся чувствительным?
- 11. Является ли jQuery языком?
- 12. Является ли Cython/Jython независимым языком?
- 13. Является ли Mathematica нетипизированным языком?
- 14. Является ли Scala строго типизированным?
- 15. Является ли дисковый накопитель считающимся базой данных?
- 16. Является ли C# языком высокого уровня?
- 17. Является ли C++ объектно-ориентированным языком?
- 18. Является ли деревья выражений основным языком C#?
- 19. Является ли C++ полностью объектно-ориентированным языком?
- 20. Является ли UML языком программирования?
- 21. Является ли конкретным языком API
- 22. Является ли Python слабо типизированным языком в качестве переменных, которые могут переключать типы?
- 23. Является ли bash интерпретируемым языком?
- 24. Является ли bash языком программирования?
- 25. Является ли Javascript языком программирования?
- 26. Является ли PHA языком программирования?
- 27. Является ли SCALA теоретическим языком?
- 28. Является ли JavaScript языком приложения?
- 29. Является ли Arraylist типичным или строго типизированным?
- 30. Является ли D статически скомпилированным?
Комментарии не для широкого обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/100846/discussion-on-answer-by-sami-kuhmonen-is-c-still-considered-as-a-static- ти). –
@GeorgeStocker спасибо. Я пытался это сделать раньше, но я все время получал сообщение об ошибке. –