C++ - Страустрап Бьярн, Хилл Мюррей

C++
С++ – это многофункциональный язык программирования, по изначально задуманный так, чтобы сделать программирование более простым для опытного программиста. Если не брать в рассчет дополнительных деталей С++ является надмножеством программного языка C. Не считая возможностей, которые предоставляет C, С++ предоставляет гибкие и производительные инструменты определения новых типов. Используя формулировки новых типов, конкретно отвечающих положениям приложения, программист имеет возможность делить разрабатываемую программу на проще поддающиеся управлению части. Такой способ написания программ часто называют обобщением данных. Данные о типах содержится в некоторых предметах типов, сформулированных пользователем. Такие предметы надежны и просты в использовании в тех условиях, когда их вид не представляется вохможным установить на стадии составлении. Программирование с использованием таких предметов часто называют ориентированно-объектным. При должном использовании этот метод дает более краткие, проще усваиваемые и более легко управляемые программы.
Основным термином С++ является класс. Класс – это вид, который определяет сам пользователь. Классы обеспечивают анонимность данных, обеспеченную инициализацию информации, смутное преобразование видов для видов, определенных эксплуатантом, меняющееся задание вида, управляемые пользователем контроль над памятью и механизмы перезагрузки процессов. С++ предоставляет более качественные, чем в C, средства выражения модульного принципа программы и проверки видов. В языке также присутствуют апгрейды, не связанные напрямую с классами, включающие в себя символические постоянные, параметры функции по умолчанию, inline-подстановку функций, операции управления свободной памятью и ссылочный тип, перезагруженные имена функций. В С++ сохранены потенциалы языка C по работе с заглавными предметами машинного обеспечения (байты, биты, адреса, слова и т.п.). Это дает шанс весьма продуктивно воспроизводить виды, определяемые эксплуатантом.
С++ и его библиотеки установленные по умолчанию спроектированы так, чтобы гарантировать переносимость. Имеющееся на данный временной отрезок воспроизводство языка будет идти в большинстве систем, которые в состоянии поддерживать C. Из С++ программ возможно прибегать к пользованию C библиотеки, и с С++ возможно прибегать к пользованию большей части инструментальных средств, поддерживающих программирование на C.
Эта книга рассчитана в первую очередь для того, чтобы оказать помощь опытным программистам изучить язык и применять его в нестандартных проектах. В ней дано полное описание С++, множество фрагментов программ и примеров.

C++ - Страустрап Бьярн, Хилл Мюррей читать онлайн бесплатно полную версию книги

Для того, чтобы перегрузить имя функции не члена и не функции operator, любому описанию функции должно предшестввать описание overload, см. #8.1. Например:

overload abs; double abs(double); int abs(int);

abs(1); // вызывается abs(int); abs(1.0); // вызывается abs(double);

Например:

class X (* ... X (int); *); class Y (* ... Y (int); *);

class Z (* ... Z (char*); *);

overload int f (X), f (Y); overload int g (X), g (Z);

f (1); // недопустимо: f(X(1)) или f(Y(1)) g (1); // g(X(1)) g («asdf»); // g(Z(«asdf»))

Операция взятия адреса amp; может применяться к перегруженому имени только в присваивании или инициализации, когда ожидаемый тип определяет, адрес какой функции брать. Напрмер:

int operator=(matrix amp;, matrix amp;); int operator=(vector amp;, vector amp;); int (*pfm)(matrix amp;, matrix amp;) = amp;operator=; int (*pfv)(vector amp;, vector amp;) = amp;operator=; int (*pfx)(...) = amp;operator=;

8.10 Описания перечислений

Перечисления являются типами int с именованными констатами.

enum_спецификатор: enum идентификатор opt (* enum_список *)

enum_список: перечислитель enum_список , перечислитель

перечислитель: идентификатор идентификатор = константное_выражение

Идентификаторы в enum-списке описаны как константы и мгут появляться во всех местах, где требуются константы. Если не появляется ни одного перечислителя с =, то значения сооветствующих констант начинаются с 0 и возрастают на 1 по мере чтения описания слева нарпаво. Перечислитель с = дает ассоцированному с ним идентификатору указанное значение; последущие идентификаторы продолжают прогрессию от присвоенного знчения.

Имена перечислителей должны быть отличными от имен обычных переменных. Имена перечислителей с разными константми тоже должны быть различны. Значения перечислителей не обзательно должны быть различными.

Роль идентификатора в спецификаторе перечисления enum_спецификатор полностью аналогична роли имени класса; он именует определенный нутератор. Например:

enum color (* red, yellow, green=20, blue *); color col = red;

color *cp = amp;col; if (*cp == blue) // ...

делает color именем типа, описывающего различные цвета, и затем описывает col как объект этого типа, а cp как указтель на объект этого типа. Возможные значения лежат во мнжестве (* 0, 1, 20, 21 *).

8.11 Описание Asm

Описание Asm имеет вид

asm ( строка );

Смысл описания asm неопределен. Обычно оно используется для передачи информации ассемблеру через компилятор.

9. Операторы

Операторы выполняются последовательно во всех случаях кроме особо оговоренных.

9.1 Оператор выражение

Большинство операторов является операторами выражение, которые имеют вид

выражение ;

Обычно операторы выражение являются присваиваниями и взовами функций.

9.2 Составной оператор, или блок

Составной оператор (называемый также «блок», что эквивлентно) дает возможность использовать несколько операторов в том месте, где предполагается использование одного:

составной_оператор: (* список_операторов opt *)

список_операторов: оператор оператор список_операторов

Обратите внимание, что описание – это вариант оператора (#9.14).

9.3 Условный оператор

Перейти
Наш сайт автоматически запоминает страницу, где вы остановились, вы можете продолжить чтение в любой момент
Оставить комментарий