main.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. // Темы:
  2. // Перегрузка операторов.
  3. // Встроенные объекты
  4. //#include "stdafx.h" //если Вы используете предкомпиляцию заголовочных
  5. //файлов, раскомментируйте эту строчку
  6. #include <tchar.h>
  7. #include "myString.h"
  8. #include "Point.h"
  9. #include "BD.h"
  10. #define stop __asm nop
  11. int _tmain(int argc, _TCHAR* argv[])
  12. {
  13. //////////////////////////////////////////////////////////////////////
  14. //Задание 1.Перегрузка операторов.
  15. //Подключите к проекту файлы MyString.cpp и MyString.h
  16. //класса MyString, разработанного Вами на предыдущем занятии
  17. //9a. Перегрузите оператор присваивания для класса MyString
  18. //Проверьте корректность работы перегруженного оператора
  19. {
  20. MyString s1("AAA"), s2;
  21. s2 = s1;
  22. s1 = "CCC";
  23. s2 = MyString("tmp");
  24. s1 = s1;
  25. stop
  26. }//утечка ресурсов "ААА"???
  27. // в перемещающем операторе присваивания, поправила
  28. stop
  29. //2.Создайте класс Point, который будет содержать координаты
  30. //"точки". Объявите конструктор (конструкторы) класса
  31. //2b. "Перегрузите" оператор += так, чтобы при выполнении
  32. //операции типа pt2+=pt1; складывались
  33. //одноименные переменные объектов pt1 и pt2, а сумма
  34. //присваивалась соответствующим переменным объекта pt2 или
  35. // в случае pt2+=1; обе переменные объекта pt2 увеличивались на
  36. // указанное значение
  37. //a) с помощью метода класса (оператор +=)
  38. //б) с помощью глобальной функции (оператор -=)
  39. //Проверьте корректность работы перегруженного оператора
  40. {
  41. Point pt1(1, 1);
  42. Point pt2(2, 2);
  43. pt2 += pt1;
  44. pt2 += 1;
  45. Point pt3(3, 3);
  46. pt2 += pt1 += pt3;
  47. pt2 -= pt1;
  48. stop
  49. //Задание 2c. Перегрузите оператор +/-
  50. //a)с помощью методов класса (оператор +)
  51. //б) с помощью глобальных функций (оператор -)
  52. //так, чтобы любая из закомментированных строк
  53. //кода выполнялась корректно
  54. {
  55. Point pt1(1, 1);
  56. Point pt2(2, 2);
  57. Point pt3;
  58. pt3 = pt1 + 5;
  59. pt3 = 2 + pt1;
  60. pt3 = pt1 + pt2;
  61. pt3 = pt1 - 5;
  62. pt3 = pt1 - pt2;
  63. stop
  64. //Задание 1d. Перегрузите унарный оператор +/-
  65. pt3 = -pt1;
  66. pt3 = +pt1;
  67. }
  68. //Задание 2d. Перегрузите оператор << (вывода в поток) для
  69. //класса MyString таким образом, чтобы при выполнении приведенной строки
  70. //на экран было выведено:
  71. //contents: "QWERTY"
  72. MyString s("QWERTY");
  73. std::cout << s << std::endl;
  74. MyString t("Test");
  75. std::cout << t << std::endl;
  76. stop
  77. //Задание 2e*. Перегрузите операторы + и += для класса MyString таким образом,
  78. //чтобы происходила конкатенация строк
  79. MyString s1("QWERTY"), s2("AAA"), s3, s4("BBB");
  80. s3 = s1 + s2;
  81. s4 += s1;
  82. stop
  83. }
  84. //Задание 3. Разработать "базу данных" о сотрудниках посредством ассоциативного
  85. //массива. Ключом является фамилия (ключ в задании уникален, поэтому нескольких Ивановых
  86. //в базе быть не может), а данными: пол, возраст, должность, зарплата...
  87. //Реализуйте:
  88. //добавление сотрудников в базу
  89. //исключение
  90. //вывод информации о конкретном сотруднике
  91. //вывод всей (или интересующей) информации о всех сотрудниках
  92. //Например:
  93. stop
  94. BD bd; //создание пустой базы
  95. bd["Ivanov"] = Data(sex::MALE,20,"director",50000); //если Ivanov-а в базе еще нет, то
  96. //добавление, если уже есть, то замена его реквизитов
  97. bd["Petrova"] = Data(sex::FEMALE, 51, "accountant", 30000);
  98. bd["Sidorov"] = Data(sex::MALE, 30, "IT-specialist", 80000);
  99. bd["Li-si-cin"];
  100. bd["Li-si-cin"] = Data(sex::MALE, 50, "pilot", 12000);
  101. BD bd1 = bd;
  102. bd1.Add_employee("Noname", Data(sex::FEMALE, 32, "owner", 600000));
  103. bd1.Add_employee("Sidorov", Data(sex::FEMALE, 30, "IT-specialist", 60000));
  104. bd.Dell_employee("Sidorov");
  105. bd1.Dell_employee("Ivanov");
  106. BD bd2;
  107. bd2 = bd;
  108. bd2 = BD(5);
  109. std::cout<<bd; //вывод информации обо всех сотрудниках
  110. /*bd1.~BD();
  111. bd.~BD();
  112. bd2.~BD();*/
  113. return 0;
  114. }//endmain