123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- // Темы:
- // Перегрузка операторов.
- // Встроенные объекты
- //#include "stdafx.h" //если Вы используете предкомпиляцию заголовочных
- //файлов, раскомментируйте эту строчку
- #include <tchar.h>
- #include "myString.h"
- #include "Point.h"
- #include "BD.h"
- #define stop __asm nop
- int _tmain(int argc, _TCHAR* argv[])
- {
- //////////////////////////////////////////////////////////////////////
- //Задание 1.Перегрузка операторов.
- //Подключите к проекту файлы MyString.cpp и MyString.h
- //класса MyString, разработанного Вами на предыдущем занятии
- //9a. Перегрузите оператор присваивания для класса MyString
- //Проверьте корректность работы перегруженного оператора
- {
- MyString s1("AAA"), s2;
- s2 = s1;
- s1 = "CCC";
- s2 = MyString("tmp");
- s1 = s1;
- stop
- }//утечка ресурсов "ААА"???
- // в перемещающем операторе присваивания, поправила
- stop
- //2.Создайте класс Point, который будет содержать координаты
- //"точки". Объявите конструктор (конструкторы) класса
- //2b. "Перегрузите" оператор += так, чтобы при выполнении
- //операции типа pt2+=pt1; складывались
- //одноименные переменные объектов pt1 и pt2, а сумма
- //присваивалась соответствующим переменным объекта pt2 или
- // в случае pt2+=1; обе переменные объекта pt2 увеличивались на
- // указанное значение
- //a) с помощью метода класса (оператор +=)
- //б) с помощью глобальной функции (оператор -=)
- //Проверьте корректность работы перегруженного оператора
- {
- Point pt1(1, 1);
- Point pt2(2, 2);
- pt2 += pt1;
- pt2 += 1;
- Point pt3(3, 3);
- pt2 += pt1 += pt3;
- pt2 -= pt1;
- stop
- //Задание 2c. Перегрузите оператор +/-
- //a)с помощью методов класса (оператор +)
- //б) с помощью глобальных функций (оператор -)
- //так, чтобы любая из закомментированных строк
- //кода выполнялась корректно
- {
- Point pt1(1, 1);
- Point pt2(2, 2);
- Point pt3;
- pt3 = pt1 + 5;
- pt3 = 2 + pt1;
- pt3 = pt1 + pt2;
- pt3 = pt1 - 5;
- pt3 = pt1 - pt2;
- stop
- //Задание 1d. Перегрузите унарный оператор +/-
- pt3 = -pt1;
- pt3 = +pt1;
- }
- //Задание 2d. Перегрузите оператор << (вывода в поток) для
- //класса MyString таким образом, чтобы при выполнении приведенной строки
- //на экран было выведено:
- //contents: "QWERTY"
- MyString s("QWERTY");
- std::cout << s << std::endl;
- MyString t("Test");
- std::cout << t << std::endl;
- stop
- //Задание 2e*. Перегрузите операторы + и += для класса MyString таким образом,
- //чтобы происходила конкатенация строк
- MyString s1("QWERTY"), s2("AAA"), s3, s4("BBB");
- s3 = s1 + s2;
- s4 += s1;
- stop
- }
- //Задание 3. Разработать "базу данных" о сотрудниках посредством ассоциативного
- //массива. Ключом является фамилия (ключ в задании уникален, поэтому нескольких Ивановых
- //в базе быть не может), а данными: пол, возраст, должность, зарплата...
- //Реализуйте:
- //добавление сотрудников в базу
- //исключение
- //вывод информации о конкретном сотруднике
- //вывод всей (или интересующей) информации о всех сотрудниках
- //Например:
- stop
- BD bd; //создание пустой базы
- bd["Ivanov"] = Data(sex::MALE,20,"director",50000); //если Ivanov-а в базе еще нет, то
- //добавление, если уже есть, то замена его реквизитов
-
- bd["Petrova"] = Data(sex::FEMALE, 51, "accountant", 30000);
- bd["Sidorov"] = Data(sex::MALE, 30, "IT-specialist", 80000);
- bd["Li-si-cin"];
- bd["Li-si-cin"] = Data(sex::MALE, 50, "pilot", 12000);
-
- BD bd1 = bd;
- bd1.Add_employee("Noname", Data(sex::FEMALE, 32, "owner", 600000));
- bd1.Add_employee("Sidorov", Data(sex::FEMALE, 30, "IT-specialist", 60000));
- bd.Dell_employee("Sidorov");
- bd1.Dell_employee("Ivanov");
-
- BD bd2;
- bd2 = bd;
- bd2 = BD(5);
- std::cout<<bd; //вывод информации обо всех сотрудниках
- /*bd1.~BD();
- bd.~BD();
- bd2.~BD();*/
-
- return 0;
- }//endmain
|