Меню сайта
Категории раздела
HTML [44] |
Visual C++ и MFC [21] |
c++ [78] |
php [19] |
Javascript [15] |
C# [51] |
загрузки [0] |
XNA
[10]
создание игр с помощью xna
|
Наш опрос
Друзья сайта
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Главная » Статьи » c++ |
Практический пример использования перегрузки оператора вызова функции
Интерфейс класса Point: #ifndef __BRACKETS_OVERLOAD__ #define __BRACKETS_OVERLOAD__ #include <iostream.h> class Point { int X, Y; public: // Конструктор Point(int x = 0, int y = 0); // Смещение точки void Offset(int x, int y); // Проверка на совпадение точек bool operator == (const Point& pt); // Проверка на несовпадение точек bool operator != (const Point& pt); // Сумма двух точек Point operator + (const Point& pt); Point& operator += (const Point& pt); // Задание новых координат Point operator () (int x, int y); // Вывод точки friend ostream& operator << (ostream& os, const Point& pt); }; #endif Реализация класса Point: #include "bracketsoverload.h" Point::Point(int x /* = 0 */, int y /* = 0 */) { X = x; Y = y; } void Point::Offset(int x, int y) { X += x; Y += y; } ostream& operator << (ostream& os, const Point& pt) { os << "(" << pt.X << "," << pt.Y << ")"; return os; } bool Point::operator == (const Point& pt) { // Проверка на совпадение return (X == pt.X && Y == pt.Y); } bool Point::operator != (const Point& pt) { // Проверка на несовпадение с помощью предыдущей функции return !(*this == pt); } Point Point::operator + (const Point& pt) { // Происходит вызов конструктора, создающего временный объект return Point(X + pt.X, Y + pt.Y); } Point& Point::operator += (const Point& pt) { *this = *this + pt; return *this; } Point Point::operator () (int x, int y) { // Задание новых координат X = x; Y = y; // Возврат новой позиции точки return *this; } Использование класса Point: #include "bracketsoverload.h" void main() { Point A, B(10, 10); cout << "A" << A << endl << "B" << B << endl; A.Offset(15, 30); Point C = A + B; cout << "C" << C << endl; Point D = C(3, 3); if(C == D) cout << "C" << C << " = " << "D" << D << endl; } Проект можно найти в папке Point | |
Просмотров: 1856 | Рейтинг: 5.0/1 |
Всего комментариев: 0 | |