Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Билет 7
- //Перегрузка операторов <<, >>, []
- /*
- Язык C++ имеет широкие возможности для перегрузки большинства операторов.
- Перегрузка оператора означает использование оператора для оперирования определенными объектами классов.
- При перегрузке оператора в классе вызывается соответствующая операторная функция (operator function),
- которая выполняет действия, которые касаются данного класса.
- */
- // Класс, который реализует точку на координатной плоскости
- // класс содержит две операторные функции
- #include <iostream>
- using namespace std;
- class Point {
- private:
- int x, y; // координаты точки
- public:
- // конструкторы класса
- Point() {
- x = 0;
- y = 0;
- }
- Point(int nx, int ny) {
- x = nx;
- y = ny;
- }
- // методы доступа к членам класса
- int GetX(void) const { return x; }
- int GetY(void) const { return y; }
- void SetX(int new_x) { x = new_x; }
- void SetY(int new_y) { y = new_y; }
- // перегруженный бинарный оператор '+'
- Point operator+(const Point& pt) {
- // p - временный объект, который создается с помощью конструктора без параметров
- Point p;
- p.x = x + pt.x;
- p.y = y + pt.y;
- return p;
- }
- // перегруженный унарный оператор '-'
- Point operator-(const Point& pt) {
- Point p;
- p.x = x - pt.x;
- p.y = y - pt.y;
- return p;
- }
- friend istream& operator>>(istream&, Point&);
- int& operator[](int index) {
- if (index == 0) {
- return x;
- }
- else {
- return y;
- }
- }
- };
- istream& operator>>(istream& in, Point& p) {
- int x, y;
- in >> x >> y;
- p.SetX(x);
- p.SetY(y);
- return in;
- }
- ostream& operator<<(ostream& out, const Point& p) {
- out << p.GetX() << ' ' << p.GetY();
- return out;
- }
- int main() {
- // объявление переменных - объектов класса CPoint
- Point P1(3, 4);
- Point P2(5, 7);
- // 1. Использование перегруженного бинарного оператора '+'
- Point P3 = P1 + P2; // объект P1 вызывает операторную функцию
- //std::cout << P3.GetX() << ' ' << P3.GetY() << '\n';
- cout << P3 << '\n';
- // 2. Использование перегруженного унарного оператора '-'
- Point P4 = P1 - P2;
- //std::cout << P3.GetX() << ' ' << P3.GetY() << '\n';
- cout << P4 << '\n';
- Point P5;
- cin >> P5;
- cout << P5 << '\n';
- P5[0] = 21;
- P5[1] = 42;
- int p5_x = P5[0];
- int p5_y = P5[1];
- cout << P5 << '\n' << p5_x << ' ' << p5_y;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement