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

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

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

main() (* i + 10; y + 10; y + 10 * y; x + y + i; x * x + i; f(7); f(y); y + y; 106 + y; *)

Определите X и Y так, чтобы они оба были целыми типами. Измените программу так, чтобы она работала и печатала значения всех допустимых выражений.

8. (*2) Определите класс INT, который ведет себя в точности как int. Подсказка: определите INT::operator int().

9. (*1) Определите класс RINT, который ведет себя в точноти как int за исключением того, что единственные возмоные операции – это + (унарный и бинарный), – (унарный и бинарный), *, /, %. Подсказка: не определяйте INT::operator int().

10. (*3) Определите класс LINT, ведущий себя как RINT, за исключением того, что имеет точность не менее 64 бит.

11. (*4) Определите класс, который реализует арифметику с произвольной точностью. Подсказка: вам надо управлять памятью аналогично тому, как это делалось для класса string.

12. (*2) Напишите программу, доведенную до нечитаемого сотояния с помощью макросов и перегрузки операций. Вот идея: определите для INT + так, чтобы он означал -, и наоборот, а потом с помощью макроопределения определите int как INT. Переопределение часто употребляемых фунций, использование параметров ссылочного типа и несколко вводящих в заблуждение комментариев помогут устроить полную неразбериху.

13. (*3) Поменяйтесь со своим другом программами, которые у вас получились в предыдущем упражнении. Не запуская ее попытайтесь понять, что делает программа вашего друга. После выполнения этого упражнения вы будете знать, чего следует избегать.

14. (*2) Перепишите примеры с comlpex (#6.3.1), tiny (#6.3.2) и string (#6.9) не используя friend функций. Используйте только функции члены. Протестируйте каждую из новых версий. Сравните их с версиями, в которых используются функции друзья. Еще раз посмотрите Упражнение 5.3.

15. (*2) Определите тип vec4 как вектор их четырех float. Определите operator[] для vec4. Определите операции +, -, *, /, =, +=, -=, *=, /= для сочетаний векторов и чсел с плавающей точкой.

16. (*3) Определите класс mat4 как вектор из четырех vec4. Определите для mat4 operator[], возвращающий vec4. Опрделите для этого типа обычные операции над матрицами. Определите функцию, выполняющие для mat4 исключение Гусса.

17. (*2) Определите класс vector, аналогичный vec4, но с длиной, которая задается как параметр конструктора vector::vector(int).

18. (*3) Определите класс matrix, аналогичный mat4, но с размерностью, задаваемой параметрами конструктора matrix::matrix(int,int).

Глава 7

Производные классы

Не надо размножать объекты без необходимости

У. Оккам

В этой главе описывается понятие производного класса в С ++. Производные классы дают простой, гибкий и эффективный апарат задания для класса альтернативного интерфейса и опредления класса посредством добавления возможностей к уже имещемуся классу без перепрограммирования или перекомпиляции. С помощью производных классов можно также обеспечить общий итерфейс для нескольких различных классов так, чтобы другие части программы могли работать с объектами этих классов однаковым образом. При этом обычно в каждый объект помещается информация о типе, чтобы эти объекты могли обрабатываться сответствующим образом в ситуациях, когда их тип нельзя узнать во время компиляции. Для элегантной и надежной обработки тких динамических зависимостей типов имеется понятие виртуалной функции. По своей сути производные классы существуют для того, чтобы облегчить программисту формулировку общности.

7.1 Введение

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