Первым шагом по овладению языком С++ является изучение его основ и библиотеки — такова тема части I, "Основы". В главе 2 рассматриваются встроенные типы данных, а также обсуждается механизм определения новых, собственных типов. В главе 3 описаны два фундаментальных библиотечных типа: >string
(строка) и >vector
(вектор). В этой же главе рассматриваются массивы, представляющие собой низкоуровневую структуру данных, встроенную в язык С++, и множество других языков. Главы 4-6 посвящены выражениям, операторам и функциям. Завершается часть главой 7 демонстрирующей основы построения собственных типов классов. Как мы увидим, в определении собственных типов примиряется все, что мы изучили до сих пор, поскольку написание класса подразумевает использование всех средств, частично раскрытых в части I.
Глава 2
Переменные и базовые типы
Типы данных — это основа любой программы: они указывают, что именно означают эти данные и какие операции с ними можно выполнять.
У языка С++ обширная поддержка таких типов. В нем определено несколько базовых типов: символы, целые числа, числа с плавающей запятой и т.д. Язык предоставляет также механизмы, позволяющие программисту определять собственные типы данных. В библиотеке эти механизмы использованы для определения более сложных типов, таких как символьные строки переменной длины, векторы и т.д. В этой главе рассматриваются встроенные типы данных и основы применения более сложных типов.
Тип определяет назначение данных и операции, которые с ними можно выполнять. Например, назначение простого оператора >i = i + j
; полностью зависит от типов переменных >i
и >j
. Если это целые числа, данный оператор представляет собой обычное арифметическое сложение. Но если это объекты класса >Sales_item
, то данный оператор суммирует их компоненты (см раздел 1.5.1).
В языке С++ определен набор базовых типов, включая арифметические типы (arithmetic type), и специальный тип >void
. Арифметические типы представляют символы, целые числа, логические значения и числа с плавающей запятой. С типом >void
не связано значений, и применяется он только при некоторых обстоятельствах, чаще всего как тип возвращаемого значения функций, которые не возвращают ничего.
2.1.1. Арифметические типы
Есть две разновидности арифметических типов: целочисленные типы (включая символьные и логические типы) и типы с плавающей запятой.
Размер (т.е. количество битов) арифметических типов зависит от конкретного компьютера. Стандарт гарантирует минимальные размеры, перечисленные в табл. 2.1. Однако компиляторы позволяют использовать для этих типов большие размеры. Поскольку количество битов не постоянно, значение одного типа также может занимать в памяти больше или меньше места.
Таблица 2.1. Арифметические типы языка С++
Тип | Значение | Минимальный размер |
---|---|---|
>bool | Логический тип | Не определен |
>char | Символ | 8 битов |
>wchar_t | Широкий символ | 16 битов |
>char16_t | Символ Unicode | 16 битов |
>char32_t | Символ Unicode | 32 бита |
>short | Короткое целое число | 16 битов |
>int | Целое число | 16 битов |
>long | Длинное целое число | 32 бита |
>long long |