Advertisement
Derga

Untitled

May 21st, 2023
1,083
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.64 KB | None | 0 0
  1. //Билет 6
  2. //операторная функция, перегрузка операторов
  3.  
  4. /*
  5. Язык C++ имеет широкие возможности для перегрузки большинства операторов.
  6. Перегрузка оператора означает использование оператора для оперирования определенными объектами классов.  
  7. При перегрузке оператора в классе вызывается соответствующая операторная функция (operator function),
  8. которая выполняет действия, которые касаются данного класса.
  9. */
  10.  
  11. // Класс, который реализует точку на координатной плоскости
  12. // класс содержит две операторные функции
  13. class Point {
  14. private:
  15.     int x, y; // координаты точки
  16.  
  17. public:
  18.     // конструкторы класса
  19.     Point() {
  20.         x = 0;
  21.         y = 0;
  22.     }
  23.  
  24.     Point(int nx, int ny) {
  25.         x = nx;
  26.         y = ny;
  27.     }
  28.  
  29.     // методы доступа к членам класса
  30.     int GetX(void) const { return x; }
  31.     int GetY(void) const { return y; }
  32.     void SetX(int new_x) { x = new_x; }
  33.     void Set(int new_y) { y = new_y; }
  34.  
  35.     // перегруженный бинарный оператор '+'
  36.     Point operator+(const Point& pt) {
  37.         // p - временный объект, который создается с помощью конструктора без параметров
  38.         Point p;
  39.         p.x = x + pt.x;
  40.         p.y = y + pt.y;
  41.         return p;
  42.     }
  43.  
  44.     // перегруженный унарный оператор '-'
  45.     Point operator-(const Point& pt) {
  46.         Point p;
  47.         p.x = x - pt.x;
  48.         p.y = y - pt.y;
  49.         return p;
  50.     }
  51. };
  52.  
  53. #include <iostream>
  54.  
  55. int main() {
  56.     // объявление переменных - объектов класса CPoint
  57.     Point P1(3, 4);
  58.     Point P2(5, 7);
  59.     Point P3;
  60.     int x, y; // дополнительные переменные
  61.  
  62.     // 1. Использование перегруженного бинарного оператора '+'
  63.     P3 = P1 + P2; // объект P1 вызывает операторную функцию
  64.     std::cout << P3.GetX() << ' ' << P3.GetY() << '\n';
  65.    
  66.     // 2. Использование перегруженного унарного оператора '-'
  67.     P3 = P1 - P2;
  68.     std::cout << P3.GetX() << ' ' << P3.GetY() << '\n';
  69.  
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement