- •Преобразование типов указателей
- •Операторы определения адреса и обращения по адресу
- •Указатели на константы и константные указатели
- •Арифметические действия с указателями
- •Одномерные и многомерные массивы.
- •Строки символов. Основные функции для работы со строками.
- •Перечисление.
- •Структура.
- •Объединения.
- •Битовые поля.
- •Тип данных bool. Тип данных wchar_t.
- •Способы передачи параметров в подпрограммы.
- •Операторы распределения памяти.
- •Объявление typedef.
- •Оператор sizeof.
- •Передача аргументов по умолчанию.
- •Встроенные функции.
- •Определение пространства имён.
- •Оператор разрешения области видимости.
- •Объявление «using». Директива «using». Псевдонимы.
- •Механизм обработки исключений.
- •Вложенные исключения.
- •Определение класса.
- •Указатель this. Спецификаторы доступа к членам класса.
- •«Друзья» класса.
- •Конструктор класса. Список инициализации.
- •Конструктор по умолчанию.
- •Конструктор копирования.
- •Явные конструкторы.
- •Деструкторы.
- •Встроенные функции–члены класса. Статические члены класса.
- •Функции-члены класса с квалификаторами const и volatile.
- •Вложенные классы. Локальные классы.
- •Общие правила перегрузки операторов.
- •Перегрузка оператора присваивания.
- •Оператор индексирования [].
- •Перегрузка бинарных операторов.
- •Составные операторы присваивания.
- •Оператор вызова функции.
- •Операторы преобразования типов (конверторы).
- •Структура данных – стек.
- •Структура данных – очередь.
- •Деревья.
- •Наследование
- •Доступ к членам наследуемого класса
- •Конструкторы, деструкторы и наследование
- •Наследование и присваивание.
- •Виртуальные функции.
- •Полиморфизм и позднее связывание.
- •Передача аргументов по умолчанию в виртуальные функции.
- •Виртуальные деструкторы.
- •Абстрактные классы.
- •Множественное наследование.
- •Виртуальное наследование.
Встроенные функции.
Функция называется встроенной, если компилятор генерирует не вызов этой функции, а встраивает её код в тело программы. Для определения встроенной функции используется ключевое слово inline, которое записывается перед именем функции или типом возвращаемого функцией значения.
Пример:
# include <stdio.h>
inline double cube (double x) {return (x*x*x);}
void main ()
{double x = 1,1;
printf (“%lf”, cube (x));
}
Ключевое слово inline рассматривается компилятором только как пожелание пользователя встроить код функции в программу. Компилятор может и не выполнить это пожелание, например, если функция является рекурсивной (которая вызывает сама себя).
Все встроенные функции должны быть определены в каждом исходном файле, где есть обращение к этой функции, причём все определения должны совпадать.
Определение пространства имён.
Пространство имён определяет область видимости имён объектов, которые не входят ни в один блок. Пространство имён не быть определено внутри блока. Синтаксис выглядит следующим образом:
Namespace имя_пространства_имён
{
…// область описания имён
}
Пример:
Namespace Mynames
{
Int m;
Int add (int a, int b) {return (a + b);}
}
Пространство имён открыто, т.е. одно и то же пространство имён можно расширять в разных исходных файлах. Пример: в другом исходном файле можно написать другие элементы пространства: ещё одну переменную и ещё одну функцию
Namespace Mynames
{
Int m;
Int sub (int a, int b) {return (a - b);}
}
Пространства имён могут вкладываться друг в друга. Пример:
Namespace Publicnames
Int k;
Namespace Mynames
{
Int m;
Int sub (int a, int b) {return (a - b);}
}
Также могут вкладываться несколько пространств имён.
По умолчанию существует анонимное пространство имён, которое доступно во всех исходных файлах и которое не нужно объявлять. Это пространство называется глобальным. Можно отметить, что все пространства имён вложены в глобальное пространство имён. Все имена, которые не входят ни в одно пространство имён и не объявляются в блоках, по умолчанию принадлежат глобальному пространству имён. Имена из заголовочных файлов с расширением h, описывающих функции «старых» стандартных библиотек C, C++ принадлежат глобальному пространству имён.
Анонимные пространства имён объявляются также как именованное пространство имён, но без указания имени. Локальное анонимное пространство имён может быть вложено в именованное пространство имён. Пример:
Namespace Publicnames
{Int k;
Namespace
{
Int m;
Int sub (int a, int b) {return (a - b);}
}
}
По умолчанию в языке С++ существует пространство имён std, которое называется стандартным. В это пространство входят все имена функций из новых заголовочных файлов стандартных библиотек С++. Эти заголовочные файлы не имеют расширения. Данное пространство имён было добавлено в язык после создания языка С++.
Оператор разрешения области видимости.
Для доступа к именам некоторого пространства имён используется оператор разрешения области видимости, который записывается в виде 2-х двоиточий ::. Тогда для обращения к некоторому объекту пространства имён нужно к имени объекта присоединить через этот оператор имя пространства имён.
При использовании имён из глобального пространства имён оператор разрешения области видимости используется без квалификатора (имени пространства имён). Это необходимо в том случае, если глобальная переменная скрывается локальной переменной.
Замечание: для доступа к именам локального анонимного пространства имён оператор разрешения области видимости не используется.