русс | укр

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

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


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


Функція в об’єкті призначення


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


Розглянемо, як виконується це перетворення, коли функція перетворення знаходиться в класі призначення. В цій ситуації використовується конструктор з одним аргументом. Однак все ускладнюється тим фактом, що конструктор класу призначення повинен мати доступ до даних вихідного класу для виконання перетворення. Поля класу time24 позначені як private, тому ми повинні написати спеціальні методи в класі time24, які дозволять прямий доступ до нього. Це методи getHrs(), getMins() та getSecs().

Лістінг програми 10.16.

#include <iostream.h>

#include <conio.h>

#include <bios.h>

#include <string.h>

 

class time24

{

private:

int hours;

int minutes;

int seconds;

public:

time24(): hours(0),minutes(0),seconds(0)

{}

time24(int h,int m,int s):hours(h),minutes(m),seconds(s)

{}

void display()const

{if(hours<10) cout<<”0”;

cout<<hours<<”:”;

if(minutes<10) cout<<”0”;

cout<<minutes<<”:”;

if (seconds<10) cout<<”0”;

cout <<seconds;

}

int getHrs() const

{return hours;}

int getMins() const

{return minutes;}

int getSecs() const

{return seconds;}

} ;

////////////////////////

class time12

{private:

int pm;

int hrs;

int mins;

public:

time12():pm(1),hrs(0),mins(0)

{ }

time12(time24);

 

time12(int ap,int h,int m):pm(ap),hrs(h),mins(m)

{ }

void display() const

{cout<<hrs<<”:”;

if (mins<10)

cout<<"0";

cout<<mins<<"-";

if(pm)

cout<<”p.m”;

else

cout<<»a.m»;

}

};

time12::time12(time24 t24)

{int hrs24=t24.getHrs();

pm=t24.getHrs()<12?0:1;

mins=(t24.getSecs()<30)?t24.getMins():t24.getMins()+1;

if (mins==60)

{mins=0;

++hrs24;

if(hrs24==12||hrs24==24)

pm=(pm==1)?0:1;

}

hrs=(hrs<13)?hrs24:hrs24-12;

if (hrs==0)

{hrs=12;pm=0;}

};

////////

int main()

{clrscr();

int h,m,s;

while(1)

//Введіть 24 для виходу

{cout <<”Введіть час у 24 форматі:\n”;

cout <<”Години (0-23):”;cin>>h;

if (h>23)

return(1);

cout <<”Хвилини:”;cin>>m;

cout<<”Секунди:”;cin>>s;

time24 t24(h,m,s);

cout<<”Вихідний час”;

t24.display();

time12 t12=t24;

cout <<”\nУ 12-год формат: “;

t12.display();

cout<<”\n\n”;

};

return 0;

}

Програма 10.16

 

Тут функцією перетворення є конструктор з одним аргументом з класу time12.

time12(time24);

Вона встановлює для об’єкту, що її викликав, значення, яке відповідає значенню об’єкту класу time24, одержаному в якості аргументу.

Функція main() в цій програмі така ж, як і в попередній. В цьому рядку знову відбувається перетворення типів від time24 до time12, але вже з використанням конструктора з одним аргументом

time12 t12=t24;

 


<== попередня лекція | наступна лекція ==>
Функція у вихідному об’єкті | Деякі рекомендації щодо перезавантаження операцій і перетворення типів. Коли які перетворення використовувати?


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