Меню сайта
Категории раздела
| 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 | |
| Просмотров: 1879 | Рейтинг: 5.0/1 |
| Всего комментариев: 0 | |