русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Множинне перезавантаження


Дата додавання: 2014-04-22; переглядів: 894.


Ми розглянули різні приклади використання операції + для додавання інтервалів та об’єднання рядків. Можна використовувати обидва написані нами класи в одній програмі, при цьому компілятор знатиме, яка з функцій нам потрібна, оскільки він вибирає функцію, виходячи з операндів операції. Нагадаємо, що таке явище є проявом принципу поліморфізму.

 

Операції порівняння

Розглянемо перезавантаження операцій іншого типу, а саме операцій порівняння.

Порівняння об’єктів класу Distance

Перезавантажимо операцію «менше ніж» (<) в класі Distance для того, щоб мати можливість порівнювати об’єкти цього класу. Приведемо лістінг програми 10.7

#include <iostream.h>

#include <conio.h>

#include <bios.h>

class Distance

{private:

int feet;

float inches;

public:

 

Distance():feet(0),inches(0.0) //Конструктор без аргументів

{ }

 

//Конструктор з двома аргументами

Distance(int ft,float in):feet(ft),inches(in)

{ }

 

void getdist()

{cout <<”\nВведіть число футів “; cin >>feet;

cout << “Дюймів “; cin>>inches;

}

 

void showdist()

{cout <<feet << “\’ “<< inches <<”\’’”;}

 

Distance operator+(Distance) const;

 

int operator<(Distance) const;

};

//dodavanna d2 I d3

Distance Distance::operator+(Distance d2) const

{

int f=feet+d2.feet;

float i=inches+d2.inches;

if(i>=12.0)

{i-=12.0;

f++;}

return Distance(f,i);

}

 

int Distance::operator<(Distance d2) const

{float bf1=feet+inches/12;

float bf2=d2.feet+d2.inches/12;

return (bf1<bf2)?1:0;

}

 

int main()

{

clrscr();

Distance dist1,dist3,dist4;

dist1.getdist();

 

Distance dist2(11,6.25);

 

dist3=dist1+dist2;

dist4=dist1+dist2+dist3;

cout <<”\ndist1=”;dist1.showdist();

cout << “\ndist2=”;dist2.showdist();

cout << “\ndist3=”;dist3.showdist();

cout << “\ndist4=”;dist4.showdist();

cout <<endl;

if (dist1<dist2)

cout<<”\ndist1<dist2”;

else

cout<<”\ndist1>=dist2”;

cout <<endl;

bioskey(0);

return 0;

}

 

Програма 10.7

Програма порівнює інтервал, заданий користувачем, з інтервалом, визначеним у програмі. Залежно від одержаного результату, на екран виводиться одне з двох речень. Оскільки у використовуваному нами компіляторі відсутній булівський тип даних, а істинним вважається всякий числовий вираз, відмінний від 0, ми у випадку , коли порівння виконується, повертаємо 1, а іншому випадку – 0.

 


<== попередня лекція | наступна лекція ==>
Об’єднання рядків | Порівняння рядків


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн