4 (972472), страница 2
Текст из файла (страница 2)
При этом даже если достаточно выделить только один байт, онвыделяется с помощью оператора new [], т.к. в деструкторе используется оператор delete[]. Например, в конструкторе по умолчанию можно задать в качестве имени пустуюстроку следующим образом:5Vector2::Vector2(){x = 1.;y = 0.;cp = new char[1];cp[0] = '\0';}Альтернативный подход заключается в присвоении указателю специального нулевогозначения cp = NULL, если реальной необходимости хранения имени данного объекта нет.Литература.Стивен Прата. "Язык программирования Си++. Лекции и упражнения.
Учебник: Пер. С англ." - ОООДиаСофтЮП, 2004. Главs 11-12.Упражнение С4_1.1. Создайте подобный классу Vector из задания С3_1 класс Vector2. Элементы данныхнового класса пусть полностью совпадают с данными класса Vector, а из методовдостаточно реализовать только конструкторы. Напишите функцию, которая в качествевходных параметров принимает две константные ссылки: на объект класса Vector и объекткласса Vector2. Эта функция должна выводить на экран больший из элементов x двухобъектов и больший из элементов y.2.
Напишите программу, в которой создайте вектор класса Vector и вектор класса Vector2.С помощью вашей функции выведите на экран большие по значению элементы этихвекторов.Примечание. Не забывайте перед использованием имени некоторого класса дать егоопределение или «упреждающую» (до собственно определения класса) декларацию,например,classVector2;Упражнение С4_2.1. Перегрузите оператор - для использования как с двумя векторами класса Vector(вычитание двух векторов), так и с одним (поворот вектора на 180 0).
В первом случае дляперегрузки используйте дружественную функцию, во втором функцию-элемент класса(метод).2. Напишите программу, в которой продемонстрируйте использование перегруженныхоператоров.Упражнение С4_3.1. Перегрузите оператор * для умножения вектора на число и числа на вектор (растяжениевектора). В первом случае для перегрузки используйте операторный метод, во втором дружественную функцию.2. Напишите программу, в которой продемонстрируйте использование перегруженногооператора.6Упражнение С4_4.1. Перегрузите операторы += и -= для сложения и вычитания векторов.2. Перегрузите операторы отношения < и > для сравнения двух объектов класса Vector.При сравнении считать большим тот вектор, у которого больше его модуль.3.
Продемонстрируйте использование перегруженных операторов.Упражнение С4_5.1. Перегрузите оператор << для вывода на экран объекта класса MyTime из упражненияC3_2.Упражнение С4_6.1. Напишите функцию преобразования объектов класса Vector в тип double. Возвращаемоезначение должно быть равным модулю вектора.Указание.
Для вычисления модуля используйте ранее написанный соответствующийметод класса Vector.Упражнение С4_7*.1. Разработайте класс комплексных чисел Complex с двумя конструкторами с двумяпараметрами (действительная и мнимая части числа) и одним параметром (действительнаячасть).2. Включите в класс публичные методы, возвращающие Действительную часть числа Мнимую часть числа Модуль комплексного числа Комплексно-сопряженное число3.
Перегрузите оператор << для вывода в поток комплексного числа в виде (x, y), где x и y– действительная и мнимая части.4. Перегрузите следующие операторы для использования с объектами класса Complex,Сomplex и double, double и Complex:+, -, *, /- сложение, вычитание, умножение и деление.5. Перегрузите следующие операторы для использования с объектами класса Complex:-- унарный минус, <, >, == - операторы сравнения.6. Предусмотрите функцию преобразования объектов класса Complex в тип doubleУпражнение С4_8.1. Измените ваш класс Vector, предусмотрев выделение динамической памяти дляхранения текстового имени вектора. Измените соответствующим образом конструкторы идеструктор класса, включая конструктор копирования. Перегрузите операторприсваивания.2.
Перегрузите оператор сложения векторов + так, чтобы суммарный вектор не только былсуммой векторов в геометрическом смысле, но и приобретал имя, являющеесяобъединением имен складываемых векторов.7Упражнение С4_9*1. Создайте класс рациональное число с двумя защищенными целочисленнымиэлементами данных, соответствующих числителю и знаменателю. Напишите конструкторкласса с двумя параметрами и значением знаменателя по умолчанию равным 1. Напишитеконструктор копирования и деструктор.2.
Перегрузите для этого класса операторы +, -, *, /, +=, -=, *=, /=, операторыприсваивания, ввода и вывода.3. Напишите операторную функцию преобразования к типу int.4. Объявите публичные методы, возвращающие числитель, знаменатель и меняющийместами числитель и знаменатель.5. Для демонстрации возможности вашего класса напишите программу «калькулятор»,которая после ввода с клавиатуры двух рациональных чисел r1, r2 и арифметическойоперации op выполняет эту операцию и выдает результат r3 на экран с помощьюперегруженного оператора вывода.8.