C++. Совет. Передача параметров в функцию

For the combined reasons of clarity and performance, many C++ programmers prefer that modifiable arguments be passed to functions by using pointers, small nonmodifiable arguments be passed by value and large nonmodifiable arguments be passed by using references to constants.

Модифицируемые параметры передают в функции при помощи указателей, маленькие немодифицируемые параметры передают по значению и большие немодифицируемые параметры передают при помощи ссылок на константы.

C++. Почему следует инициализировать переменные в месте их объявления

  • Стек вызовов — это сегмент данных, используемый для хранения локальных переменных и временных значений.
  • Стек выделяется при запуске программы.
  • Функции хранят свои локальные переменные на стеке.
  • При выходе из функции соответствующая область стека объявляется свободной.
  • Промежуточные значения, возникающие при вычислении сложных выражений, также хранятся на стеке.

Рассмотрим работу стека на данном примере

C++. Типизация

C++ имеет статическую слабую явную типизацию.

При статической типизации типы переменных и функций устанавливаются на этапе компиляции. Cложный, но быстрый код.

При слабой/нестрогой типизациии множество неявных преобразований выполняются автоматически, даже если может произойти потеря точности или преобразование неоднозначно.

При явной типизации тип новых переменных/функций/их аргументов нужно задавать явно.

Несмотря на все вышесказанное, C++11 получил поддержку неявной типизации с помощью ключевых слов auto и decltype. Поддерживает динамическую типизацию при использовании библиотеки Boost (boost::any, boost::variant). Имеет черты как сильной так и слабой типизации.