2016-01-14 2 views
1

Я знал, что C++ - это статически типизированный язык, но новая спецификация C++ вводит новый синтаксис auto, который может определять тип переменной сам по себе. Так может ли C++ по-прежнему считаться статически типизированным языком?Является ли C++ все еще считающимся статически типизированным языком?

ответ

12

Нет, это не делает язык C++ динамически типизированным. auto - это метод определения типа времени компиляции. Полученный код точно такой же, как и без auto, и тип не может изменить время выполнения.

+1

Комментарии не для широкого обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/100846/discussion-on-answer-by-sami-kuhmonen-is-c-still-considered-as-a-static- ти). –

+0

@GeorgeStocker спасибо. Я пытался это сделать раньше, но я все время получал сообщение об ошибке. –

1

C++ по-прежнему является статически типизированным языком с автоматическим спецификатором типа, поскольку автоматически означает, что тип будет выведен компилятором во время компиляции. Вместо этого во время выполнения на динамически типизированных языках.

1

Так может ли C++ по-прежнему считаться статически типизированным языком?

Да потому, что этот фрагмент кода еще не скомпилируется:

auto i = 42; // 42 is an int -> i is an int 
i = "test"; // can't assign a string to an int 
+0

Это не будет компилироваться ни на одном языке ... интерпретируется, да, но компилируется нет. Однако C++ имеет возможность быть динамичным. Вы даже можете создать динамический класс с инициализационными списками динамических объектов и получить динамический результат. У меня есть доказательство концепции, если вы заинтересованы. –

+2

@ zackery.fix Это не имеет никакого отношения к интерпретации и компиляции. Это всего лишь стратегии реализации и не оказывают существенного влияния на семантику языка. –

+0

@ zackery.fix здесь, интерпретатор C++: https://root.cern.ch/cling. Здесь, компилятор Lisp: http://www.clisp.org/. Это полностью ортогонально с динамической типизацией. –

Смежные вопросы