объектно-ориентированное программирование
ООП
Технология программирования, базирующаяся на объектной декомпозиции
ООЯ
язык
ООП, объектно-ориентированный язык
абстрагирование
процесс выделения
абстракций в предметной области задачи
абстракция
совокупность существенных характеристик некоторого объекта, которые отличают его от других объектов и, таким образом, четко определяют особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа
абстрактный тип
тип данных, который предоставляет для работы с элементами этого типа определённый набор функций, а также возможность создавать элементы этого типа при помощи специальных функций
ограничение доступа
сокрытие отдельных элементов реализации
абстракции, не затрагивающих существенных характеристик её как целого. Необходимое ограничение доступа предполагает разграничение 2-х частей в описании абстракции:
интерфейса и
реализации.
инкапсуляция
интерфейс
совокупность доступных извне элементов
реализации абстракции (основные характеристики состояния и поведения объекта)
реализация
совокупность недоступных извне элементов реализации
абстракции (внутренняя организация элементов абстракции и механизмы реализации ее поведения)
иерархия
показывает, что некая абстракция является частным случаем другой
абстракции
модульность
принцип модульности
принцип разработки программной системы, который предполагает
реализацию этой системы в виде отдельных частей (модулей), причем при выполнении декомпозиции частей на модули желательно объединять логически связанные части. При этом по возможности обеспечивать сокращения количества связей между модулями
иерархичность
ранжированная или упорядоченная система
абстракций. Предполагается использование
иерархии при разработке программных систем
типизация
принцип типизации
ограничения, накладываемые на свойства объектов и препятствующие взаимозаменяемости
абстракций разных типов (либо сильно сужающие такую возможность). В языках с жесткой типизацией для каждого программного объекта определяется тип, определение
Java
является полностью
ООЯ. Все объекты размещаются в динамической памяти и доступны через ссылки на них. В языке нет явной операции удаления объектов из памяти. Методами являются только подпрограммы, и вызывать их можно только через объекты или
классы. Непосредственно поддерживается одиночное
наследование, возможна реализация множественного. Все связывания сообщений с методами динамические, за исключением методов, которые не могут быть замещаемыми. Кроме классов в качестве второй конструкции
инкапсуляции Java содержит пакеты
указатель
объект, содержащий адрес другого объекта
прототип функции
По сути, прототип — это просто объявление типа возвращаемого значения, имени и списка параметров функции, завершающееся точкой с запятой. Форма записи прототипа: <тип_результата> <имя_функции>(<список_параметров>); Прототипы функций в C++ обязательны, в C желательны
private
внутренние компоненты класса
компоненты класса, объявленные как скрытые. Это внутренние компоненты класса, они доступны только компонентам функций того же класса и
дружественным функциям (дружественным для данного класса). Если при описании класса тип доступа к компоненту не указан, то по умолчанию ему присваивается этот тип доступа
protected
защищенные компоненты класса
компоненты класса, объявленные как защищенные. Доступны функциям данного класса и его потомкам (т.е. могут быть унаследованы). При отсутствии наследования интерпретируются как внутренние компоненты
public
общедоступные компоненты класса
открытые компоненты класса , общие компоненты. Доступны за пределами класса в любом месте программы
поле
компонент класса, используемый для хранения параметров объектов и функций
параллелизм
свойство нескольких
абстракций одновременно находиться в активном состоянии т.е. выполнять несколько операций
устойчивость
свойство
абстракции существовать во времени независимо от процесса, породившего программный объект и/или в пространстве, перемещаясь из одного адресного пространства, в котором он был задан в другое. Соответственно различают временные объекты, хранящие промежуточные результаты некоторых действий, локальные объекты – существующие внутри подпрограммы и время их жизни зависит от времени жизни программы, глобальные объекты – существуют, пока программа находится в памяти, сохраняемые – данные хранятся в файлах внешней (постоянной) памяти между сеансами работы программы
манипуляторы
простой манипулятор
манипулятор, котоорый не требует указания аргументов
параметризованный манипулятор
требует указания аргумента, для его использования требуется подключить заголовочный файл <iomanip>
наследование
Это такое соотношение между
классами, когда один класс использует структурную или функциональную часть одного или нескольких других классов. (Соответственно простое и множественное наследование). Наследование позволяет строить
иерархии, в которых
производные классы получают элементы родительского (родительских) или
базового классов и могут дополнять или изменять его свойства. Классы, находящиеся ближе к началу иерархии объединяют в себе наиболее общие черты для всех нижележащих классов. По мере продвижения вниз иерархии, классы приобретают все более индивидуальные черты
шаблоны классов
шаблон
некие шаблоны, на основе которых можно строить другие
классы
контейнерный класс
класс, предназначенный для хранения данных, организованных определенным образом. Примерами контейнеров могут служить массивы,
линейные списки или
стеки
базовый класс
в C++ один класс может наследовать свойства другого. Унаследованный (родительский) класс называют базовым классом
производный класс
в C++ один класс может наследовать свойства другого. Класс-наследник называют производным классом
механизм наследования
обеспечивает создание
дерева родственных
классов. Дерево может иметь несколько уровней, причем на каждом из них могут добавляться новые
поля и методы
палиндром
это последовательность символов, которая одинаково читается слева направо и справа налево. Например, “радар” — текстовый палиндром. Его образует симметричная последовательность букв. Числовой палиндром-палиндром, составленный из цифр. Например, ’’1’’,’’232’’, ’’121’’ — числовые палиндромы
полиморфизм
механизм, обеспечивающий возможность определения разных аспектов некоторого единого по названию метода для
классов различных уровней
иерархии. Т.е. с помощью одного и того же обращения к методу будут выполняться различные действия в зависимости от типа, на который ссылается указатель в каждый момент времени. Существут:
статический полиморфизм и
динамический полиморфизм
виртуальный метод
метод, ссылка на который разрешается на этапе выполнения программы (перевод английского слова
virtual — в данном значении всего-навсего "фактический", то есть ссылка разрешается по факту вызова)
статический полиморфизм
раннее связывание
связывание, выполняемое на этапе
компиляциипрограммы
динамический полиморфизм
позднее связывание
связывание, выполняемое на этапе выполнения программы
полиморфный
EOF
End Of File, признак конца файла
ios
input-output stream, базовый класс стандартной библиотеки классов потоков ввода-вывода С++ (iostream library), содержащий общие для ввода-вывода поля и методы
streambuf
базовый класс стандартной библиотеки классов потоков ввода-вывода С++ (iostream library), обеспечивает буферизацию потоков и их взаимодействие с физическими устройствами
ostream
istream
iostream
входной поток
поток, позволяющий вводить данные в память
выходной поток
поток, осуществляющий вывод данных из памяти
двунаправленный поток
позволяет осуществлять как включение, так и исключение данных из потока
стандартные потоки
потоки, предназначенные для передачи данных с клавиатуры на экран
файловые потоки
потоки, предназначенные для обмена информацией с файлами
строковые потоки
потоки, предназначенные для работы с массивами символов в оперативной памяти
потоки, определяемые пользователем
в
потоках, определяемых пользователем, для ввода-вывода используется перегрузка для всех стандартных типов операций чтения и извлечения, при этом выбор конкретной операции определяется типом фактических параметров
stdin
стандартный
поток ввода данных (
входной поток). По умолчанию связан с консолью, но его можно перенаправить на другое устройство
stdout
стандартный
поток вывода данных (
выходной поток). По умолчанию связан с консолью, но его можно перенаправить на другое устройство
stderr
стандартный
поток ошибок. По умолчанию связан с консолью, но его можно перенаправить на другое устройство
классы с самоадресацией
Эти
классы содержат элемент-указатель, который указывает на объект того же типа класса
классы ввода-вывода
система шаблонных классов, на их основе строится система ввода-вывода стандарта C++
библиотека ввода-вывода
библиотека классов потоков ввода-вывода
iostream library
в C++ — система ввода-вывода, основанная на использовании классов
виртуальная функция
функция, объявленная с использованием ключевого слова
virtual в базовом
классе и переопределенная в одном или нескольких производных классах. При этом прототипы функций в разных классах должны совпадать не только по имени, но и по типу возвращаемого результата и сигнатуре. Если функция не переопределяется производным классом, используется определение базового класса. С помощью виртуальных функций язык С++ поддерживает
полиморфизм
чистая виртуальная функция
это
виртуальная функция, не имеющая определения. Должна быть переопределена в производном классе. Ее прототип записывается так:
virtual тип-возвращаемого-результата имя-функции(список параметров) = 0; Элемент "= 0;" сообщает компилятору, что виртуальная функция не имеет определения, связанного с базовым классом
шаблон функции
шаблон, с помошью которого можно определить алгоритм, применяемый к данным различных типов. Причем конкретный тип данных передается следующей функции в виде параметров на этапе компиляции. Компилятор автоматически генерирует правильный код, соответствующий передаваемому типу. Т.е. создается функция, которая автоматически перегружает сама себя и не содержит дополнительных "расходов", связанных с параметризацией
класс
абстрактный тип данных, используемый для описания некоторого множества объектов предметной области, имеющих общие свойства и поведение. В языке С понятие класса отсутствует. По сути класс представляет собой коллекцию переменных и функций, которые манипулируют этими переменными. Переменные и функции, образующие класс, называют членами класса
объект класса
это экземпляр
класса, который находится в таком же отношении к своему классу, в каком переменная находится по отношению к своему типу. Определение объекта похоже на определение переменной: оно означает выделение памяти, необходимой для хранения объекта
конструктор
специальный метод для инициализации
классов и их объектов. Имя совпадает с именем класса. Конструктор не имеет возвращаемого типа, типа результата. Не наследуется. В иерархии классов конструкторы выполняются в порядке их "классового происхождения"
конструктор копирования
специальный вид
конструктора, получающий в качестве единственного параметра
указатель на объект того же класса. Вызывается, когда новый объект создается путем копирования уже существующего
конструктор по умолчанию
будет вызван, если не указано ни одного
конструктора. Такой конструктор вызывает конструкторы по умолчанию для
полей класса и конструкторы по умолчанию базовых классов. В случае, когда класс содержит константы или цифры, при попытке создания объекта класса будет выдана ошибка, так как их необходимо инициализировать конкретными значениями, а конструктор по умолчанию этого делать не умеет
конструктор со списком инициализации
чаще всего применяется для задания назначенных значений объекта, в котором используются фиксированные и ссылочные поля, являющиеся объектами других, ранее определенных классов
неинициализирующий конструктор
у такого
конструктора нет списка параметров и отсутствует тело. В этом случае значения полей объекта не определяются
деструктор
особый метод, применяемый для освобождения памяти, занимаемой объектом. Имя деструктора совпадает с именем класса, но ему предшествует символ "тильда" (~). Деструктор не имеет возвращаемого типа, типа результата. Не наследуется. В иерархии классов деструкторы, в отличие от
конструкторов (которые выполняются в порядке своего "классового происхождения"), выполняются в обратном порядке
статические компоненты класса
статические поля класса
локальный класс
класс, объявленный внутри некоторой функции
вложенный класс
класс, объявленный внутри другого класса
функция-оператор
операторная функция
функциональная операция
Функция, перегруженная или переопределенная в виде operator@, где @ — знак операции
унарная функция-оператор
унарная операторная функция
унарная функциональная операция
унарная операция
функциональная операция, которая требует наличия одного операнда. Может быть определена как внутри описания класса, так и вне его. Если она определена внутри класса, то вызывающий ее объект и считается операндом. Если вне, то следует явно указать операнд
бинарная функция-оператор
бинарная операторная функция
бинарная функциональная операция
бинарная операция
функциональная операция, которая требует наличия двух операндов. Может быть определена как внутри описания класса, так и вне его. Если она определена внутри класса, то вызывающий ее объект считается первым операндом и явно задается лишь один операнд. Если вне, то следует явно указать оба операнда
стек
частный случай структур данных, однонаправленный список, добавление элемента в который и выборка из которого выполняется с одного конца. В стеке осуществляется принцип
LIFO. Возможен также принцип
FIFO. Стеки широко применяются в системном программировании при написании
компиляторов и различных рекурсивных алгоритмов
дек
(двухсторонняя очередь) –
линейный список, в котором все операции вставки, удаления и доступа выполняются с обоих концов. Различают дек с ограниченным вводом и ограниченным выводом, в котором операция удаления и вставки элементов соответственно выполняется только на одном из концов
вершины стека
конец, с которого выполняется выборка и добавление элементов
LIFO
Last In First Out
FIFO
First In First Out
очередь
частный случай однонаправленного списка, добавление элементов в который выполняется в один конец, а выборка идет из другого конца. Очередь – абстрактная структура данных, реализует принцип обслуживания
FIFO. В системном программировании очереди используются для диспетчеризации задач моделирования
целый список
линейный список, элементы которого принадлежат множеству натуральных чисел, причем некоторые элементы могут повторяться
список
последовательность ячеек, связанных в некотором порядке. Каждая ячейка имеет два поля: в одном – элемент списка, в другом – указатель, сообщающий положение следующей ячейки
линейный список
представляет последовательность из n>0 узлов x[1], x[2], ... ,x[n], важнейшей структурной особенностью которой является такое расположение элементов списка один относительно другого, как будто они находятся на одной линии
поток
абстрактное понятие, относящееся к любому переносу данных от источника к приемнику
объектный подход
подход, при котором предполагается, что собственные ресурсы, которыми могут манипулирвать только методы самого объекта, скрыты от внешних компонент
дружественная функция
используются, когда оформляется действие, не представляющее собой свойство класса, но входящее в
интерфейс класса и нуждающееся в доступе к его скрытым полям. Прототип такой функции объявляют внутри класса, к полям которого необходимо получить доступ, а перед прототипом ставят ключевое слово
friend
дружественный класс
если все методы какого-либо
класса должны иметь доступ к скрытым
полям другого класса, то он объявляется дружественным с помощью ключевого слова
friend. При этом класс сам определяет какие функции являются для него дружественными, а какие — нет
friend
дружественный
спецификаторы функций
inline
встраиваемый
спецификатор функций, сообщающий компилятору о намерении программиста поместить тело функции непосредственно в тело программы (вместо организации обычного вызова функции), должен стоять перед остальной частью объявления функции. Соответствующая функция называется
встраиваемой функцией. Рекурсивные функции, функции, содержащие циклы или инструкции
switch, а также функции, содержащие статические данные, не могут быть встраиваемыми. Если
компилятор не может встроить функцию в строку, он может проигнорировать требование inline
switch
Оператор switch предназначен для организации выбора из множества различных вариантов
встраиваемая функция
для таких функций
компилятор помещает машинные коды, реализующие эту функцию, непосредственно вместо вызова, что значительно ускоряет работу. По правилам Си++, если тело компонентной функции размещено в описании класса, то эта функция по умолчанию считается встраиваемой. Встраиваемые компилятором функции можно описать и вне определения класса, добавив к заголовку функции служебное слово
inline. Рекурсивные функции, функции, содержащие циклы или инструкции switch, а также функции, содержащие статические данные, не могут быть встраиваемыми
new
оператор, выделяет динамическую память под объект заданного типа и возвращает указатель на эту область памяти. Общая форма использования: var = new тип; — здесь: var — переменная указателя, которая будет принимать адрес выделенной памяти, а тип — тип данных, которые будут храниться в этой памяти
delete
оператор, освобождает память, на которую указывает его аргумент. Общая форма использования: delete var; — здесь var — указатель на ранее выделенную область памяти
explicit
неконвертируемый конструктор
создается при помощи
спецификатора функций explicit. Обычно, если имеется конструктор, принимающий только один аргумент, то для инициализации объекта ob можно использовать варианты: ob(x), либо ob = x. Если же конструктор определен с помощью explicit, то он будет задействован только в случае, когда для инициализации используется обычный синтаксис конструктора, т.е. ob(x). При этом автоматических преобразований выполняться не будет, и вариант ob = x не будет разрешен
virtual
виртуальный
абстрактный класс
класс, содержащий хотя бы одну
чистую виртуальную функцию. Может использоваться только как базовый класс для других классов. Предназначен для представления общих понятий, которые предполагается конкретизировать в производном классе
static
статический
модификатор типа, обеспечивающий постоянное хранение следующей за ним локальной переменной. Это позволяет поддерживать значение указанной переменной между вызовами функции. Модификатор также может использоваться для объявления глобальных переменных. В этом случае он ограничивает область видимости модифицируемой им переменной файлом, в котором она объявлена. В С++ при использовании данного модификатора типа в объявлении члена данных класса создается только одна копия этого члена, предназначенная для совместного использования всеми объектами класса
this
ключевое слово, используемое для обозначения неявного параметра — указателя на тот объект, который сгенерировал обращение к функции-члену. Всем функциям-членам this передается автоматически
указатель this
параметр this
неявный параметр — указатель на объект, который сгенерировал обращение к функции-члену. Всем функциям-членам this передается автоматически
NULL
макрос, его значение — нулевой указатель. Определен в стандартной библиотеке функций, для использования которой нужно подключить заголовок <stdlib.h> в языке Си или его эквивалент <cstdlib> в С++
void
пустой тип данных. Также спецификатор типа, в основном использующийся для явного объявления функций, которые не возвращают значения. Кроме того, используется для создания
void-указателей (указателей на тип void)
указатель на void
void-указатель
указатель, обладающий способностью указывать на объект любого типа
union
объединение
ключевое слово union используют для обозначения специального типа
класса, который назначает двум или более переменным одну и ту же область памяти. По умолчанию все члены объединения открыты, в С++ разрешается использование спецификатора доступа
private для определения закрытых членов (в Си — нет). Ограничения: объединение не может наследовать классы любого типа, быть базовым классом, иметь
виртуальные функции-члены, иметь в качестве члена объект, перегружающий оператор "=". Члены объединения не могут быть объявлены как
статические, не могут быть ссылками. Объект не может быть членом объединения, если класс этого объекта явно определяет функцию
конструктора или
деструктора (т.е. приемлемы объекты, которые имеют только конструкторы и деструкторы по умолчанию)
функциональный класс
Класс, в котором переопределен оператор вызова функции. У такого класса не требуется наличие других полей и методов
глобальная область видимости
существует вне всех других областей. Имя, объявленное в глобальной области, известно всей программе
локальная область видимости
определяется границами блока, т.е. начинается с открывающей фигурной скобки ({) и оканчивается закрывающей фигурной скобкой (}). Имя, объявленное в локальной области, известно только внутри этой области
глобальные переменные
существуют на протяжении всего жизненного цикла программы, доступны для использования всеми функциями в программе
локальные переменные
создаются при входе в их блок, а разрушаются при выходе из блока. Это означает, что их значения не хранятся между вызовами функций. Чтобы сохранить значения переменных между вызовами, можно использовать модификатор
static
константа
литерал
фиксированное значение, которое не может быть изменено программой. Может иметь любой базовый тип данных. Способ представления константы зависит от ее типа
глобальная константа
константа, которая существует на протяжении всего жизненного цикла программы и доступна для использования всеми функциями в программе. Правило, существующее в C++, нацелено на упрощение использования констант в заголовочных файлах. В C++ глобальные константы связаны внешним образом, т.е. в одном из файлов существует определенное объявление, в то время как остальные файлы должны содержать ссылочные объявления на файл, содержащий ключевое слово external
файл
Под файлом обычно подразумевается поименованная информация на внешнем носителе. Практически в С++ файл рассматривается как последовательный
поток байтов. Каждый файл завершается маркером
EOF или указанием числа байтов, записанных в служебную структуру данных, поддерживаемую соответствующей системой. По способу доступа файлы делятся на
файлы с последовательным доступом и
файлы с произвольным доступом
файлы с последовательным доступом
файлы, в которых чтение и запись производятся с начала, байт за байтом
файлы с произвольным доступом
допускают чтение и запись в произвольной позиции
using
инструкция, применяющаяся для упрощения доступа к пространству имен, привносит заданное имя или пространство имен в текущую область видимости
std
пространство имен, в котором в стандарте С++ определена вся информация, связанная со стандартной библиотекой
namespace
ключевое слово, позволяет разделить глобальное пространство имен путем создания декларативной области
оператор разрешения области видимости
операция доступа к области видимости
описатель видимости
::
задает область видимости, которой принадлежит член
пространство имен
В языке С++ можно создать
локальную область видимости, используя ключевое слово
namespace. Пространство имен определяет некоторую декларативную область. Ее назначение — ограничить действие имен
множественное наследование
Когда механизм наследования осуществляется от нескольких классов, то это множественное
наследование. При множественном наследовании производный
класс может включать произвольное количество базовых классов
виртуальное наследование
При
множественном наследовании базовый
класс не может быть задан в производном классе более одного раза. На практике возникает ситуация, когда производный класс будет содержать несколько копий одного базового класса. Чтобы избежать многократного включения в производный класс компонент базового класса и используется виртуальное наследование
виртуальный интерфейс
интерфейс, реализация которого планируется в производных классах. Базовый класс только объявляет виртуальный интерфейс, устанавливая договоренность по типу аргумента и коду возврата
двусвязные линейные списки
двунаправленные линейные списки
двусвязные списки
линейные списки, записи которых связаны посредством пары указателей, хранимых в адресных полях записей списка
куча
область свободной памяти, которая расходуется для удовлетворения запросов функций динамического выделения памяти (calloc(), malloc(), free(), realloc())
корень дерева
корень
узел
дерева, который не имеет предка
листья
Узлы
дерева, которые не имеют потомков
корневое дерево
дерево
В теории графов конечное корневое дерево формально определяется как непустое конечное множество узлов Т, таких что: существует один, специально выделенный узел, называемый
корнем дерева, а остальные узлы образуют попарно непересекающиеся подмножества множества узлов Т, каждое из которых является деревом
бинарное дерево
Важная разновидность
корневых деревьев. Это дерево, где каждый узел может иметь не более 2-х потомков
лес
Обобщение понятия
корневого дерева. Под лесом понимается упорядоченное множество непересекающихся корневых деревьев. Отражением близости этих понятий является простота преобразований дерева в лес и наоборот, леса в дерево. Исключение корня превращает дерево в лес. Наоборот, добавление одного узла превращает лес в дерево, где этот узел становится корнем. Чтобы подчеркнуть близость этих понятий, в некоторых работах для обозначения леса из N деревьев употребляют термин: дерево с N -кратным корнем
прохождение бинарного дерева
обход бинарного дерева
прохождение
Прохождение (или обход) бинарного дерева означает систематическое перечисление всех узлов для выполнения необходимой функциональной обработки. Наиболее известны и практически важны 3 способа прохождения, которые отличаются порядком и направлением обхода бинарного дерева. Можно проходить узлы в прямом порядке (сверху-вниз) (
preorder), в симметричном порядке (слева-направо) (
inorder) и, наконец, в концевом порядке (снизу-вверх) (
postorder). Рекурсивные алгоритмы прохождения бинарного дерева по каждому из перечисленных способов включают 3 одинаковых процедуры, где нужно пройти корень поддерева, левое поддерево текущего корня и правое поддерево текущего корня. Направление обхода однозначно определяет последовательность выполнения указанных процедур
preorder
прямой способ прохождения дерева, при котором выполняется следующая последовательность обхода: 1. Корень дерева, 2. Левое поддерево, 3. Правое поддерево (способ прохождения дерева сверху-вниз)
inorder
симметричный способ прохождения дерева, при котором выполняется следующая последовательность обхода: 1. Левое поддерево, 2. Корень дерева, 3. Правое поддерево (способ прохождения дерева слева-направо)
postorder
концевой способ прохождения дерева, при котором выполняется следующая последовательность обхода: 1. Левое поддерево, 2. Правое поддерево, 3. Корень дерева (способ прохождения дерева снизу-вверх)
связный список
линейный связный список
последовательность ячеек, связанных в некотором порядке. Каждая ячейка имеет два поля: в одном из них находится элемент списка, в другом – указатель, сообщающий положение следующей ячейки
разреженный список
Целый список —
линейный список, элементы которого принадлежат множеству натуральных чисел, причем некоторые элементы могут повторяться. В целых списках m – число элементов, n – размах списка, тогда разреженный список тот, в котором m<<n. Для хранения разреженных списков в компактной форме используются массивы
разветвления
ветви
десятичная система Дьюи
степень узла
Важная метрическая характеристика
корневого дерева. Степенью узла корневого дерева считается число поддеревьев, для которых он является
корнем
уровень узла
Важная метрическая характеристика
корневого дерева. Уровень узла корневого дерева определяется длиной пути, образованного чередующейся последовательностью узлов и
ветвей, который соединяет его с
корнем. Длина пути измеряется числом узлов в нем
динамическое распределение
Динамическое распределение узлов по адресным полям предков позволяет конструировать
бинарные деревья с желаемой иерархической структурой информационных полей. При создании нового узла бинарного дерева в динамической реализации, из
кучи распределяется область памяти, объем которой необходим для хранения всех полей его логической структуры. Адрес области памяти, выделенной для нового узла, сохраняется в соответствующем (левом или правом) адресном поле предка. Для динамического выделения памяти используют оператор
new, для освобождения — оператор
delete
оператор вызова функции
операция вызова функции
Вызов функции является бинарной операцией. Первым ее операндом является указатель на функцию (в том числе просто ее имя), а вторым — список ее аргументов
преобразование типа
приведение типа
преобразование одного типа данных в другой
операция присваивания
оператор присваивания
оператором присваивания в C и C++ служит знак равенства (=). Примеры операций присваивания: a=10; , a=b=c=10; и x=y;. Полная версия операции присваивания имеет вид: переменная=переменная оператор выражение; (например, x=x+1;). Операция присваивания выполняется справа налево
операция индексирования
операция индексирования массива
Для индексирования массивов в C++ используется операция []. Ее операндами являются указатель (имя массива) и целочисленное выражение — индекс элемента массива
форматирование данных
изменение формата вводимых (выводимых) данных. Например, в потоковых классах, используя флаг showbase, можно организовать вывод восьмеричного числа 56 в виде 056 (т.е. вывод с основанием системы счисления)
неформатированный ввод
бесформатный ввод
бесформатный ввод использует традиционную нотацию обращения к соответствующей функции. При этом преобразование данных не выполняется. Операция бесформатного ввода не влияет на состояние потока, привязанного к используемому; состояние флагов управления форматом не оказывает никакого влияния на бесформатный ввод. Функции бесформатного ввода работают не со строками, а с двоичным представлением данных, поэтому символ '/0' обрабатывается так же, как и все остальные
неформатированный вывод
бесформатный вывод
бесформатный вывод использует традиционную нотацию обращения к соответствующей функции. При этом преобразование данных не выполняется. Операция бесформатного вывода не влияет на состояние потока, привязанного к используемому; состояние флагов управления форматом не оказывает никакого влияния на бесформатный вывод. Функции бесформатного вывода работают не со строками, а с двоичным представлением данных, поэтому символ '/0' обрабатывается так же, как и все остальные
булев тип данных
логический тип данных. Логическая переменная может принимать одно из двух значений — истина (true) или ложь (false)
константа char
комплексный тип данных
является формализацией математической концепции "комплексное число"
wchar_t
тип данных wchar_t
двубайтовые символы
это символы широкого, или двойного, формата. Для их хранения отводится 16 разрядов
процедуры модификации списка
должны обеспечивать вставку и исключение записей
списка. Частным случаем процедур вставки и исключения являются процедуры добавить и удалить начальную или конечную запись списка
процедуры просмотра списка
должны обеспечивать смещение
указателя текущей записи (
this) на требуемое число позиций в направлении начала или конца
списка
операция вставки
вставка нового узла сразу до или после x[k] узла
списка
операция удаления
операция доступа к значению
получение доступа к x[k] элементу
списка для проверки и/или изменения содержания его полей
стандартная библиотека шаблонов
STL
итератор
обобщение понятия
указателя для работы с различными структурами данных стандартным способом
константный итератор
используются тогда, когда изменять значения соответствующих элементов контейнера нет необходимости
магический квадрат
квадратная матрица размером NxN из N в квадрате последовательных элементов произвольной арифметической прогрессии натуральных чисел, которые размещены так, что суммы элементов любого столбца, строки или главной диагонали одинаковы
язык C++
C++
Си++
ООЯ. Обеспечивает поддержку абстракции данных, наследование, возможное динамическое связывание сообщений с объектами наряду с остальными свойствами языка C. C++ имеет две различных системы типов, также обеспечивается множественное наследование, явное удаление объектов из памяти, разнообразные средства управления доступа к сущностям в классе, некоторые из которых позволяют подклассам быть подтипами. Класс может содержать неявные методы
конструктора и
деструктора
перегрузка
переопределение операции, оператора