русс | укр

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

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


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


Операції арифметичного присвоювання


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


Закінчимо вивчення перезавантаження бінарних операцій на прикладі арифметичного присвоювання +=. Ця операція виконує присвоювання і додавання одночасно. Ми будемо використовувати цю операцію для додавання інтервалів, записуючи результат у змінну, що означає перший інтервал. Приведемо лістінг програми 10.9 (базується на програмі 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) //Конструктор без аргументів

{ }

 

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

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;

 

void operator+= (Distance);

 

};

//Додавання 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;

}

 

void Distance::operator+=(Distance d2)

{feet+=d2.feet;

inches+=d2.inches;

if (inches>=12.0)

{inches-=12.0;

feet++;

}

}

 

int main()

{

clrscr();

Distance dist1;

dist1.getdist();

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

Distance dist2(11,6.25);

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

dist1+=dist2;

cout<<”\nПісля операції:”;

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

cout<<endl;

bioskey(0);

return 0;

}

Програма 10.9

 

Зауважимо, що у функції operator+=() цієї програми об’єктом, що приймає значення суми, є об’єкт, який викликає цю функцію. Тому feet та inches є заданими величинами, а не тимчасовими змінними, які використовуються тільки для повернутого об’єкту. Функція operator+=() не повертає жодного значення і має тип void. Але, якщо ми захочемо використати цю операцію в складніших виразах, таких як

dist=dist1+=dist2;

то нам буде потрібне значення, яке повертається. Ми можемо ввести його, записавши в кінці визначення функції operator+=() рядок

return Distance(feet, inches);

в якій безіменний об’єкт ініціалізується тим самим значенням, що й об’єкт, який викликає функцію, і потім повертається.

 


<== попередня лекція | наступна лекція ==>
Порівняння рядків | Операція індексації масиву


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