Название: | Справочное руководство по C++ |
Автор: | |
Жанр: |
Программирование |
Входит в циклы: |
Нет данных |
Страниц: | 73 |
Издано: | Неизвестно |
Описание книги Справочное руководство по C++:
Центром произведения является личность героя, а главными элементами —
события и обстоятельства его существования.
Нечасто встретишь столь глубоко и проницательно раскрытые
трудности человеческих взаимосвязей, стоящих на повестке дня во все века.
R.1 Введение
Это справочное руководство описывает язык программирования C++ по состоянию на май 1991. C++ — язык программирования общего назначения, базирующийся на языке программирования С[1].
В дополнение к возможностям С язык C++ предоставляет классы, функции подстановки, перегрузку операций, перегрузку имен функций, постоянные типы, ссылки, операторы управления свободной памятью, проверку параметров функций и приведение типов. Все расширения С суммируются в §R.18.1. Различия между C++ и ANSI C++ приведены в §R.18.2[2].
Расширения C++ версии 1985 года до данного описания суммируются в §R.18.1.2. Разделы, относящиеся к шаблонам типа (§R.14) и управлению особыми ситуациями (§R.15), являются местами планируемых расширений языка.
R.1.1 Обзор
Это руководство содержит следующее:
1. Введение.
2. Соглашения о лексических понятиях.
3. Основные понятия.
4. Стандартные преобразования.
5. Выражения.
6. Операторы.
7. Описания.
8. Описатели.
9. Классы.
10. Производные классы.
11. Контроль доступа к членам.
12. Специальные функции-члены.
13. Перегрузка.
14. Шаблоны типов.
15. Управление особыми ситуациями.
16. Препроцессорная обработка.
Приложение A: Сводка синтаксиса
Приложение B: Совместимость
R.1.2 Запись синтаксиса
В записи синтаксиса языка в этом руководстве синтаксические понятия обозначаются курсивом, а литеральные слова и символы шрифтом постоянной ширины. Варианты перечисляются на отдельных строках, за исключением тех немногих случаев, когда длинный список вариантов дается на одной строке с пометкой «один из». Необязательный терминальный или нетерминальный символ обозначается с помощью нижнего индекса «opt», поэтому
>{выражение>opt}
означает необязательное выражение, заключенное в фигурные скобки.
R.2 Соглашения о лексических понятиях
Программа на C++ состоит из одного или нескольких файлов (§R.3.3). С логической точки зрения файл транслируется за несколько проходов. Первый проход состоит в препроцессорной обработке (§R.16), на которой происходит включение файлов и макроподстановка. Работа препроцессора управляется с помощью команд, являющихся строками, первый символ которых отличный от пробела есть # ($$R2.1). Результат работы препроцессора есть последовательность лексем. Такую последовательность лексем, т.е. файл после препроцессорной обработки, называют единицей трансляции.
R.2.1 Лексемы
Существуют лексемы пяти видов: идентификаторы, служебные слова, литералы, операции и различные разделители. Пробелы, вертикальная и горизонтальная табуляция, конец строки, перевод строки и комментарии (все вместе «обобщенные» пробелы), как указано ниже, игнорируются, за исключением того, что они отделяют лексемы. Обобщенные пробелы нужны, чтобы разделить стоящие рядом идентификаторы, служебные слова и константы.
Если входной поток разобран на лексемы до данного символа, то следующей лексемой считается лексема с максимально возможной длиной, которая начинается с этого символа.
R.2.2 Комментарии
Символы /* начинают комментарий, который завершается символами */. Такие комментарии не могут быть вложенными. Символы // начинают комментарий, который завершается концом этой строки. Символы //, /* и */ не имеют специального назначения в комментарии // и рассматриваются как обычные символы. Аналогично символы // и /* не имеют специального назначения внутри комментария /*.
R.2.3 Идентификаторы
Идентификатор — это последовательность букв и цифр произвольной длины. Первый символ должен быть буквой, символ подчеркивания _ считается буквой. Прописные и строчные буквы различаются. Все символы существенны.
R.2.4 Служебные слова
Перечисленные ниже идентификаторы фиксируются как служебные слова и в другом смысле не могут использоваться:
>asm continue float new signed try
>auto default for operator sizeof typedef
>break delete friend private static union
>case do goto protected struct unsigned
>catch double if public switch virtual
>char else inline register template void
Похожие книги
Язык программирования Euphoria
версия 3.1 Справочное руководство (c) 2007 Rapid Deployment Software Разрешено свободное копирование этого Руководства. Источник данного текста: http://rapideuphoria.com/russian/refman_r.htm
Часть I — Ядро языка
1. Введение
Язык программирования Euphoria имеет следующие преимущества перед другими языками:
* исключительно простое, гибкое и мощное определение ядра, которое легко поддаётся изучению и дальнейшему использованию.
* динамическое распределение памяти. Переменные изменяются, не доставляя программисту забот о выделении под них и высвобождении участков памяти. Объекты любой размерности могут быть присвоены элементу ряда (массива) Euphoria.
* уникальный высокопроизводительный интерпретатор, который в 30 раз быстрее обычных интерпретаторов вроде Perl или Python.
* оптимизирующий транслятор с Euphoria на Си, ещё более разгоняющий вашу программу, часто от 2-х до 5-ти раз прибавляя ей скорости по сравнению с интерпретатором, и без того необыкновенно быстрым.
* широкая проверка правильности хода программы: контролируются индексы вне диапазона, неинициализированные переменные, неверные величины параметров библиотечных подпрограмм, недопустимые типы данных, присваиваемых переменным и т.п. Здесь практически не бывает загадочных машинных исключений — вы всегда получаете полное описание на человеческом языке того, что случилось с вашей программой во время её прогона, плюс распечатку последовательности вызовов подпрограмм и значений всех переменных программы. Программа отлаживается быстро, просто и более досконально.
* вы полностью защищены от необходимости знать особенности вашей машины. Для программирования не требуются сведения о длине машинных слов, представлении величин на битовом уровне, порядке байтов и т.д. и т.п.
* в интерпретатор встроены полноэкранный отладчик исходного кода и профилировщик хода программы. В пакете имеется полноэкранный многофайловый редактор с цветной подсветкой правильного синтаксиса и автозавершением стандартных конструкций языка. Этот редактор написан на Euphoria, и его исходный код предоставляется вам без каких бы то ни было ограничений.
* программы Euphoria работают на платформах Linux, FreeBSD, 32-битной Windows и DOS любой версии, не имея никаких ограничений на объем доступной для использования памяти, в том числе, пресловутых 640K. Вы можете создавать программы, которые автоматически используют всю много-мегабайтную оперативную память вашей машины, плюс дисковый файл памяти, если оперативной оказывается недостаточно.
* вы можете трансформировать исходный код ваших программ в самостоятельные двоичные исполняемые файлы разнообразных типов и форматов.
* подпрограммы Euphoria естественным образом универсальны. Пример программы, который вы найдете чуть ниже, демонстрирует единственную подпрограмму, которая одинаково успешно сортирует данные любого типа : целые числа, числа с плавающей точкой, строки и т.д. При этом Euphoria не является «объектно-ориентированным» языком, а достигает многих преимуществ этих языков значительно более простым путём.
* система программирования Euphoria полностью свободна и открыта.
1.1 Пример программы
Здесь представлен пример завершённой программы Euphoria.
~~~~~~~~~~~
sequence list, sorted_list
function merge_sort(sequence x)
— сортирует x в порядке возрастания методом рекурсивного слияния
integer n, mid
sequence merged, a, b
n = length(x)
if n = 0 or n = 1 then
return x — тривиальный случай
end if
mid = floor(n/2)
a = merge_sort(x[1..mid]) — сортируется первая половина x
b = merge_sort(x[mid+1..n]) — сортируется вторая половина x
— слияние двух отсортированных половинок
merged = {}
while length(a) 0 and length(b) 0 do
if compare(a[1], b[1]) then
merged = append(merged, a[1])
a = a[2..length(a)]
else
merged = append(merged, b[1])
b = b[2..length(b)]
end if
end while
return merged & a & b — слитые данные плюс остатки
end function
procedure print_sorted_list()
— генерирует sorted_list из list
list = {9, 10, 3, 1, 4, 5, 8, 7, 6, 2}
sorted_list = merge_sort(list)
? sorted_list
end procedure
print_sorted_list() — эта команда запускает программу
~~~~~~~~~~~
Данный пример содержит 4 отдельные команды, которые выполняются последовательно. Первая объявляет две переменные: list и sorted_list как ряды (sequence) (гибкие массивы). Вторая определяет функцию merge_sort(). Третья определяет процедуру print_sorted_list(). Четвёртая и последняя команда вызывает процедуру print_sorted_list() на исполнение.
Программа печатает на экране:
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.
merge_sort() так же легко отсортирует {1.5, -9, 1e6, 100} или {«oranges», «apples», «bananas»} .
Данный пример имеется в каталоге Euphoria — euphoriatutorialexample.ex . Это не самый быстрый из методов сортировки, доступных в Euphoria. Перейдите в каталог — euphoriademo — и введите команду «ex allsorts», чтобы проверить хронометраж различных алгоритмов сортировки при возрастании числа сортируемых объектов. Быстрый учебный пример программирования аналогичной функции на Euphoria вы можете также найти в — euphoriademobenchfilesort.ex .
1.2 Установка
Чтобы установить систему Euphoria на своей машине, сначала прочтите инструкцию в файле install_r.doc . Установка заключается в простом копировании файлов euphoria на ваш жесткий диск в каталог (директорию) с именем «euphoria», и последующей модификации вашего файла autoexec.bat с таким расчётом, чтобы включить каталог euphoriabin в путь поиска, а переменную окружения EUDIR установить на каталог euphoria.
После установки каталог euphoria на вашей машине будет выглядеть примерно так:
euphoria readme.doc readme.htm License.txt bin Интерпретаторы ex.exe и exw.exe. Трансляторы ec.exe и ecw.exe. Или на Linux/FreeBSD, интерпретатор exu и транслятор ecu. Здесь также будут служебные программы, такие как ed.bat, guru.bat и т.д. include стандартные библиотеки, т.е. graphics.e и т.п. source полный исходный код (интерпретатор, транслятор, биндер) doc refman.doc, library.doc и другие файлы документации в простом текстовом формате html файлы формата HTML, соответствующие каждому из файлов .doc в каталоге doc tutorial небольшие учебные программы, которые помогут вам в изучении Euphoria demo общие демо-программы, которые работают на всех платформах dos32 демо-программы, специфические для DOS32 (может не быть) win32 демо-программы, специфические для WIN32 (может не быть) linux демо-программы, специфические для Linux/FreeBSD (может не быть) langwar игра language war (пиксельно-графическая версия для DOS или текстовая версия для Linux/FreeBSD) bench программы оценки производительности Подкаталог Linux не включается в пакет для DOS/Windows, а dos32 и win32 подкаталоги не включаютя в пакет для Linux/FreeBSD. В данном Руководстве каталоги показаны с использованием обратной косой черты. ( ). Пользователи Linux/FreeBSD должны помнить, что там действует обычная косая черта( / ).
Читать дальше
Конец
Книга закончилась. Надеемся, Вы провели время с удовольствием!
Поделитесь, пожалуйста, своими впечатлениями:
Оглавление:
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
1
-
2
-
2
-
2
-
2
-
3
-
3
-
3
-
3
-
4
-
4
-
5
-
5
-
5
-
5
-
6
-
6
-
6
-
6
-
6
-
6
-
6
-
7
-
7
-
7
-
7
-
7
-
8
-
9
-
9
-
9
-
9
-
9
-
10
-
10
-
10
-
10
-
10
-
11
-
12
-
13
-
13
-
13
-
14
-
14
-
14
-
15
-
15
-
15
-
15
-
15
-
15
-
15
-
16
-
16
-
16
-
16
-
16
-
17
-
17
-
17
-
17
-
17
-
17
-
17
-
17
-
18
-
18
-
18
-
18
-
18
-
18
-
19
-
19
-
19
-
19
-
20
-
20
-
20
-
21
-
21
-
21
-
22
-
22
-
23
-
23
-
23
-
23
-
24
-
24
-
24
-
24
-
25
-
25
-
25
-
26
-
27
-
27
-
27
-
27
-
28
-
29
-
29
-
29
-
30
-
30
-
30
-
31
-
31
-
31
-
32
-
32
-
32
-
33
-
34
-
34
-
35
-
35
-
35
-
35
-
36
-
36
-
36
-
37
-
37
-
37
-
37
-
38
-
38
-
38
-
38
-
39
-
40
-
40
-
40
-
41
-
41
-
42
-
42
-
43
-
44
-
44
-
45
-
45
-
45
-
45
-
45
-
45
-
45
-
45
-
45
-
46
-
46
-
46
-
47
-
47
-
47
-
47
-
48
-
48
-
48
-
48
-
48
-
49
-
49
-
49
-
49
-
49
-
50
-
50
-
50
-
50
-
51
-
51
-
51
-
51
-
51
-
52
-
52
-
52
-
52
-
52
-
52
-
52
-
53
-
53
-
53
-
54
-
54
-
55
-
55
-
55
-
55
-
55
-
55
-
55
-
56
-
56
-
57
-
57
-
57
-
57
-
57
-
58
-
58
-
58
-
58
-
58
-
58
-
58
-
58
-
58
-
58
-
59
-
59
-
59
-
59
-
59
-
59
-
59
-
59
-
60
-
60
-
60
-
60
-
60
-
60
-
60
-
60
-
61
-
61
-
61
-
61
-
61
-
62
-
62
libcats.org
Главная →
Справочное руководство по основам информатики и вычислительной техники
Справочное руководство по основам информатики и вычислительной техники
Я.Л. Шрайберг, М.В. Гончаров
Скачать книгу бесплатно (djvu, 882 Kb)
Читать «Справочное руководство по основам информатики и вычислительной техники»
Популярные книги за неделю:
#1
Ф.И.Бурдейный, Н.В.Казанский. Карманный справочник радиолюбителя-коротковолновика (1959, DjVu)
440 Kb
#2
Я.Войцеховский. Радиоэлектронные игрушки (1977, djvu)
13.76 Mb
#3
Подготовка саперов, подразделений специального назначения по разминированию
Категория: Научно-популярная литература (разное)
1.49 Mb
#4
128 советов начинающему программисту
Очков В.Ф., Пухначев Ю.В.
Категория: computers, computers, prog
8.91 Mb
#5
Английский язык в картинках
I.A. Richards; Christine M. Gibson
Категория: Иностранные языки
5.77 Mb
#6
Красота в изгнании. Королевы подиума
Александр Васильев
Категория: Исторические
21.01 Mb
#7
Ограждение участка. Ограды. Заборы. Калитки. Ворота
В.И.Рыженко
Категория: Строительство
1.23 Mb
#8
Эти загадочные зеркала
В. Правдивцев
Категория: Религия. Эзотерика
88.19 Mb
#9
Самоделки школьника
Тарасов Б.В.
Категория: science, science, technical, hobby, oddjob
41.91 Mb
#10
Наука и жизнь.Маленькие хитрости
Категория: E_Engineering, EM_Mechanics of elastic materials
3.50 Mb
Только что пользователи скачали эти книги:
#1
Справочник по радиоэлектронным устройствам
Линде Д.П., и др. (ред.)
Категория: Engineering, Electrical engineering
11.75 Mb
#2
Голография сфокусированных изображений и спекл-интерферометрия
Клименко И.С.
Категория: Physics, Electromagnetism, Optics
3.22 Mb
#3
Варианты вступительных экзаменов по математике в МГУ (2001 год)
под общ. ред. И. Н. Сергеева
Категория: science, science, exact
598 Kb
#4
Кинология
Ф.Полищук, А.Трофименко
Категория: science, living, house, animals
14.45 Mb
#5
Несеребряные и необычные среды для голографии
Барачевский В.А.
5.24 Mb
#6
Оптическая голография с записью в трехмерных средах
Денисюк Ю.Н.
2.13 Mb
#7
Бисероплетение. Модное рукоделие
Джилл Томас
Категория: hobby, , hobby, fancy
7.05 Mb
#8
Бисероплетение
Категория: ХОББИ и РЕМЕСЛА
1.81 Mb
#9
Методика преподавания математики в восьмилетней школе
Под общей редакцией Ляпина С. Е.
Категория: ЕСТЕСТВЕННЫЕ НАУКИ, НАУКА и УЧЕБА
6.45 Mb
#10
Основы дидактики
под ред. Б. П. Есипова
Категория: ГУМАНИТАРНЫЕ НАУКИ
5.28 Mb
Содержание:
-
R.1 Введение 1
-
R.2 Соглашения о лексических понятиях 1
-
R.3 Основные понятия 2
-
R.4 Стандартные преобразования 4
-
R.5 Выражения 5
-
R.6 Операторы 10
-
R.7 Описания 12
-
R.8 Описатели 15
-
R.9 классы 18
-
R.10 Производные классы 21
-
R.11 Контроль доступа к членам 24
-
R.12 Специальные функции-члены 25
-
R.13 Перегрузка 29
-
R.14 ШАБЛОНЫ ТИПА 31
-
R.15 Обработка особых ситуаций 33
-
R.16 Препроцессорная обработка 35
-
R.17 Приложение A: Сводка грамматики 36
-
R.18 Приложение B: Совместимость 39
-
Список служебных слов 41
-
* ПРИМЕРЫ * 41
-
Примечания 47
Бьярн Страустрап. Справочное руководство по C++
Второе дополненное издание
* СПРАВОЧНОЕ РУКОВОДСТВО
R.1 Введение
Это справочное руководство описывает язык программирования C++ по состоянию на май 1991. C++ — язык программирования общего назначения, базирующийся на языке программирования С .
В дополнение к возможностям С язык C++ предоставляет классы, функции подстановки, перегрузку операций, перегрузку имен функций, постоянные типы, ссылки, операторы управления свободной памятью, проверку параметров функций и приведение типов. Все расширения С суммируются в §R.18.1. Различия между C++ и ANSI C++ приведены в §R.18.2 .
Расширения C++ версии 1985 года до данного описания суммируются в §R.18.1.2. Разделы, относящиеся к шаблонам типа (§R.14) и управлению особыми ситуациями (§R.15), являются местами планируемых расширений языка.
R.1.1 Обзор
Это руководство содержит следующее:
1. Введение.
2. Соглашения о лексических понятиях.
3. Основные понятия.
4. Стандартные преобразования.
5. Выражения.
6. Операторы.
7. Описания.
8. Описатели.
9. Классы.
10. Производные классы.
11. Контроль доступа к членам.
12. Специальные функции-члены.
13. Перегрузка.
14. Шаблоны типов.
15. Управление особыми ситуациями.
16. Препроцессорная обработка.
Приложение A: Сводка синтаксиса
Приложение B: Совместимость
R.1.2 Запись синтаксиса
В записи синтаксиса языка в этом руководстве синтаксические понятия обозначаются курсивом, а литеральные слова и символы шрифтом постоянной ширины. Варианты перечисляются на отдельных строках, за исключением тех немногих случаев, когда длинный список вариантов дается на одной строке с пометкой «один из». Необязательный терминальный или нетерминальный символ обозначается с помощью нижнего индекса «opt», поэтому
{выражение opt }
означает необязательное выражение, заключенное в фигурные скобки.
R.2 Соглашения о лексических понятиях
Программа на C++ состоит из одного или нескольких файлов (§R.3.3). С логической точки зрения файл транслируется за несколько проходов. Первый проход состоит в препроцессорной обработке (§R.16), на которой происходит включение файлов и макроподстановка. Работа препроцессора управляется с помощью команд, являющихся строками, первый символ которых отличный от пробела есть # ($$R2.1). Результат работы препроцессора есть последовательность лексем. Такую последовательность лексем, т.е. файл после препроцессорной обработки, называют единицей трансляции.
R.2.1 Лексемы
Существуют лексемы пяти видов: идентификаторы, служебные слова, литералы, операции и различные разделители. Пробелы, вертикальная и горизонтальная табуляция, конец строки, перевод строки и комментарии (все вместе «обобщенные» пробелы), как указано ниже, игнорируются, за исключением того, что они отделяют лексемы. Обобщенные пробелы нужны, чтобы разделить стоящие рядом идентификаторы, служебные слова и константы.
Если входной поток разобран на лексемы до данного символа, то следующей лексемой считается лексема с максимально возможной длиной, которая начинается с этого символа.
R.2.2 Комментарии
Символы /* начинают комментарий, который завершается символами */. Такие комментарии не могут быть вложенными. Символы // начинают комментарий, который завершается концом этой строки. Символы //, /* и */ не имеют специального назначения в комментарии // и рассматриваются как обычные символы. Аналогично символы // и /* не имеют специального назначения внутри комментария /*.
R.2.3 Идентификаторы
Идентификатор — это последовательность букв и цифр произвольной длины. Первый символ должен быть буквой, символ подчеркивания _ считается буквой. Прописные и строчные буквы различаются. Все символы существенны.
R.2.4 Служебные слова
Перечисленные ниже идентификаторы фиксируются как служебные слова и в другом смысле не могут использоваться:
asm continue float new signed try
auto default for operator sizeof typedef
break delete friend private static union
case do goto protected struct unsigned
catch double if public switch virtual
char else inline register template void
class enum int return this volatile
const extern long short throw while
В дополнение к этому идентификаторы, содержащие двойное подчеркивание (__) резервируются для реализаций C++ и стандартных библиотек и пользователи не должны употреблять их.
В представлении программы на C++ в кодировке ASCII используются в качестве операций или разделителей следующие символы:
! % ^ & * ( ) — + = {} | ~
[ ] ; ‘: » ‹ › ? , . /
а следующие комбинации символов используются для задания операций:
-› ++ — .* -›* ‹‹ ›› ‹= ›= == != &&
|| *= /= %= += -= ‹‹= ››= &= ^= |= ::
Каждая операция считается отдельной лексемой.
В дополнении к этому следующие символы резервируются для препроцессора:
# ##
Определенные, зависящие от реализации, свойства, такие как тип операции sizeof ($$R5.3.2) или диапазоны базовых типов (§R.3.6.1) определяются в стандартных заголовочных файлах (§R.16.4)
‹float.h› ‹limits.h› ‹stddef.h›
Эти файлы являются частью ANSI стандарта для С. Кроме того заголовочные файлы
‹new.h› ‹stdarg.h› ‹stdlib.h›
определяют типы самых важных библиотечных функций. Два последних файла входят в ANSI стандарт для С, файл ‹new.h› относится только к С++.
R.2.5 Литералы
Есть несколько видов литералов (часто называемых «константами»).
литерал:
целая константа
символьная константа
константа с плавающей точкой
строка литералов
R.2.5.1 Целые константы
Все целые константы, состоящие из последовательности цифр, считаются десятичными (основание счисления десять), если только они не начинаются с 0 (цифра ноль). Последовательность цифр, начинающаяся с 0, считается восьмеричным целым (основание счисления восемь). Цифры 8 и 9 не являются восьмеричными. Последовательность цифр, начинающаяся с 0x или 0X, считается шестнадцатеричным целым (основание счисления шестнадцать). Шестандцатеричные цифры могут состоять из символов от a или A до f или F с десятичными значениями их от десяти до пятнадцати. Например, число двенадцать можно записать как 12, 014 или 0XC.
Тип целой константы определяется ее представлением, значением и окончанием. Если она десятичная и не имеет окончания, ее тип будет первым подходящим для ее значения из следующих типов: int, long int, unsigned long int. Если она восьмеричная или шестнадцатеричная и не имеет окончания, ее тип будет первым подходящим для ее значения из следующих: int, unsigned int, long int, unsigned long int. Если она оканчивается символом u или U, ее тип будет первым подходящим для ее значения из следующих: unsigned int, unsigned long int. Если она оканчивается символом l или L, ее тип будет первым подходящим для ее значения из следующих: long int, unsigned long int. Если она оканчивается на ul, lu, uL, Lu, Ul, lU, UL или LU, ее типом будет unsigned long int.