Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Перегрузка операций (операторов). Перегрузка операторов отношения и логических операторов. Перегрузка оператора присваивания. Перегрузка унарных операторов.

Читайте также:
  1. III. СССР В ПОСЛЕВОЕННЫХ МЕЖДУНАРОДНЫХ ОТНОШЕНИЯХ
  2. IV НОРМИ І ВИМОГИ ОХОРОНИ ПРАЦІ НА РОБОЧОМУ МІСЦІ ОПЕРАТОРА КОМП'ЮТЕРНОГО НАБОРУ
  3. IV. Изучение технологических свойств руд
  4. P Научитесь доверять своему партнеру, доверяйте своим отношениям и поступайте так, чтобы они никогда не закончились.
  5. V. Изучение гидрогеологических, инженерно-геологических, экологических и других природных условий месторождения
  6. А что у вас на личном фронте, Джастин?-поинтересовалась Дора. –Вот вы уже задумывались о серьезных отношениях с девушкой? –подмигнула она зрителям в зале.
  7. А) Вариации характерологических предрасположенностей

Программа перегружает операторы ==, <, >, && и ||. В качестве проверки перегрузка используется на объектах 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 | Нарушение авторских прав


Читайте в этой же книге: Неполный конструктор | Перезагрузка конструкторов | Перегрузка операций (операторов). Перегрузка операторов доступа к членам класса. Перегрузка операторов new и delete. Функции преобразования типа. | Полиморфизм и виртуальные функции. Раннее и позднее связывание. Динамический полиморфизм. Виртуальные функции. Виртуальные и невиртуальные функции. | Полиморфизм и виртуальные функции. Применение динамического полиморфизма. Виртуальные деструкторы. Абстрактные классы и чисто виртуальные функции. | Длина самого длинного слова 10 | Самое длинное слово beautiful | Строковые потоки | Состояние формата (ОТНОСИТСЯ К ПОСЛЕДНЕМУ ВОПРОСУ, КОТОРЫЙ 24) | Работа с несовместимыми конструкциями. |
<== предыдущая страница | следующая страница ==>
Перегрузка операций (операторов). Понятие перегрузки операторов. Синтаксис перегрузки операции. Перегрузка бинарных операторов.| Перегрузка операций (операторов). Перегрузка операторов инкремента и декремента. Перегрузка оператора индексирования. Перегрузка оператора вызова функции.

mybiblioteka.su - 2015-2024 год. (0.006 сек.)