Функцияgetline()
. Определенная в заголовке string
функция, которой передают поток istream
и строковую переменную. Функция читает данные из потока до тех пор, пока не встретится символ новой строки, а прочитанное сохраняет в строковой переменной. Функция возвращает поток istream
. Символ новой строки в прочитанных данных отбрасывается.
Функцияpush_back()
. Функция-член класса vector
, добавляющая элементы в его конец.
Функцияsize()
. Функция-член классов vector
и string
возвращает количество символов или элементов соответственно. Возвращаемое значение имеет тип size_type
для данного типа.
Шаблон класса (class template). Проект, согласно которому может быть создано множество специализированных классов. Чтобы применить шаблон класса, необходимо указать дополнительную информацию. Например, чтобы определить вектор, указывают тип его элемента: vector
содержит целые числа.
Глава 4
Выражения
Язык С++ предоставляет богатый набор операторов, а также определяет их назначение и применение к операндам встроенного типа. Он позволяет также определять назначение большинства операторов, операндами которых являются объекты классов. Эта глава посвящена операторам, определенным в самом языке и применяемым к операндам встроенных типов. Будут описаны также некоторые из операторов, определенных библиотекой. Определение операторов для собственных типов рассматривается в главе 14.
4.1. Основы
Существует несколько фундаментальных концепций, определяющих то, как обрабатываются выражения. Начнем с краткого обсуждении концепций, относящихся к большинству (если не ко всем) выражений. В последующих разделах эти темы рассматриваются подробней.
Существуют &
) и обращение к значению (*
), воздействуют на один операнд. Парные операторы, такие как равенство (==
) и умножение (*
), воздействуют на два операнда. Существует также (всего один)
Некоторые *
, используются для обозначения как унарных (обращение к значению), так и парных (умножение) операторов. Представляет ли символ унарный оператор или парный, определяет контекст, в котором он используется. В использовании таких символов нет никакой взаимосвязи, поэтому их можно считать двумя разными символами.
Чтобы лучше понять порядок выполнения выражений с несколькими операторами, следует рассмотреть концепцию
5 + 10 * 20/2;
Операндами оператора *
могли бы быть числа 10
и 20
, либо 10
и 20/2
, либо 15
и 20
, либо 15
и 20/2
. Понимание таких выражений и является темой следующего раздела.
В ходе вычисления выражения операнды нередко преобразуются из одного типа в другой. Например, парные операторы обычно ожидают операндов одинакового типа. Но операторы применимы и к операндам с разными типами, если они допускают преобразование (см. раздел 2.1.2) в общий тип.
Хотя правила преобразования довольно сложны, по большей части они очевидны. Например, целое число можно преобразовать в число с плавающей запятой, и наоборот, но преобразовать тип указателя в число с плавающей точкой нельзя. Немного неочевидным может быть то, что операнды меньших целочисленных типов (например, bool
, char
, short
и т.д.) обычно int
. Более подробная информация о преобразованиях приведена в разделе 4.11.
Значение операторов для встроенных и составных типов определяет сам язык. Значение большинства операторов типов классов мы можем определить самостоятельно. Поскольку такие определения придают альтернативное значение существующему символу оператора, они называются >>
и <<
библиотеки ввода и вывода, а также операторы, использовавшиеся с объектами строк, векторов и итераторов, являются перегруженными операторами.