Читайте также:
|
|
Программа перегружает операторы ==, <, >, && и ||. В качестве проверки перегрузка используется на объектах A и B.
Исходный код:
#include <iostream>
using namespace std;
class three_d {
int x, y, z;
public:
three_d() { x = y = z = 0; }
three_d(int i, int j, int k) { x = i; y = j; z = k; }
bool three_d::operator==(three_d op2);
bool three_d::operator<(three_d op2);
bool three_d::operator>(three_d op2);
bool three_d::operator&&(three_d op2);
bool three_d::operator||(three_d op2);
};
bool three_d::operator==(three_d op2)
{
if((x = op2.x) && (y == op2.y) && (z == op2.z))
return true;
else
return false;
}
bool three_d::operator<(three_d op2)
{
if((x < op2.x) && (y < op2.y) && (z < op2.z))
return true;
else
return false;
}
bool three_d::operator>(three_d op2)
{
if((x > op2.x) && (y > op2.y) && (z > op2.z))
return true;
else
return false;
}
bool three_d::operator&&(three_d op2)
{
if((x && op2.x) && (y && op2.y) && (z && op2.z))
return true;
else
return false;
}
bool three_d::operator||(three_d op2)
{
if((x || op2.x) && (y || op2.y) && (z || op2.z))
return true;
else
return false;
}
int main()
{
int x, y, z;
cout << «Enter coordinates the values of A: \n»;
cin >> x; cin >> y; cin >> z;
three_d a(x, y, z);
cout << «Enter coordinates the values of B: \n»;
cin >> x; cin >> y; cin >> z;
three_d b(x, y, z);
cout << «\nAlternate output operations and their results:\n»;
cout << «== — «;
if (a==b) cout << «true\n»; else cout << «false\n»;
cout << «< — «;
if (a<b) cout << «true\n»; else cout << «false\n»;
cout << «> — «;
if (a>b) cout << «true\n»; else cout << «false\n»;
cout << «&& — «;
if (a&&b) cout << «true\n»; else cout << «false\n»;
cout << «|| — «;
if (a||b) cout << «true\n»; else cout << «false\n»;
cin >> x;
return 0;
}
Перегрузка оператора присваивания.
Пример перегрузки оператора ‘=’ для присваивания строки показан ниже:
class Integer
{
private:
int value;
public:
Integer(int i): value(i)
{}
Integer& operator=(const Integer& right) {
//проверка на самоприсваивание
if (this == &right) {
return *this;
}
value = right.value;
return *this;
}
};
Перегрузка унарных операторов.
Синтаксис: < возвр_тип > operatorX();
Рассмотрим примеры перегрузки унарных операторов для определенного класса Integer.
class Integer
{
private:
int value;
public:
Integer(int i): value(i)
{}
//унарный +
friend const Integer& operator+(const Integer& i);
//унарный -
friend const Integer operator-(const Integer& i);
…
…
…
}
При выполнении действий над разными типами выполняется преобразование типа.
Функции (или операторы преобразования типа) делают возможным преобразование объекта (класса) к любому из встроенных типов. Общий синтаксис:
operator < имя_нового_типа > ();
Дата добавления: 2015-09-03; просмотров: 119 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Перегрузка операций (операторов). Понятие перегрузки операторов. Синтаксис перегрузки операции. Перегрузка бинарных операторов. | | | Перегрузка операций (операторов). Перегрузка операторов инкремента и декремента. Перегрузка оператора индексирования. Перегрузка оператора вызова функции. |