Складніший приклад успадковування

Розглянемо складніший приклад використання успадковування. Раніше ми ввели клас Distance (починаючи з програми 11.3), в якому припускалося, що інтервал може мати тільки додатнє значення. Створимо новий похідний клас, який міститиме додаткове поле, куди будемо записувати знак – додатній або від’ємний. Також змінимо методи класу, щоб вони могли працювати зі знаковим значенням інтервалу. Далі приведено лістінг програми 17.5

#include <iostream.h>

#include <conio.h>

#include <bios.h>

enum posneg{pos,neg};

class Distance

{protected:

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 <<"\''";}

};

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

class DistSign:public Distance

{

private:

posneg sign;

public:

DistSign():Distance()

{sign=pos;}

 

DistSign(int ft,float in,posneg sg=pos):Distance(ft,in)

{

sign=sg;

}

 

void getdist()

{ Distance::getdist();

char ch;

cout<<"Введіть + чи -";

ch=getch();

if (ch=='+')

sign=pos;

else

sign=neg;

}

 

void showdist() const

{cout<<((sign==pos)?"(+)":"(-)");

Distance::showdist();

}

};

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

int main()

{

clrscr();

DistSign alpha;

alpha.getdist();

DistSign beta(11,6.25);

DistSign gamma(100,5.5,neg);

//Вивід

cout<<"\nA=";alpha.showdist();

cout<<"\nB=";beta.showdist();

cout<<"\nC=";gamma.showdist();

cout<<endl;

bioskey(0);

return 0;

}

 

Програма 17.5

Ми ввели клас DistSign, до якого додали можливість роботи зі знаковими числами. Клас Distance в цій програмі такий сам, як і в попередньому, з тією різницею, що його дані описані як protected. Фактично в цьому випадку специфікатор міг бути і private, оскільки нема методів похідного класу, які б потребували доступу до даних класу Distance. Але, якщо виникне потреба в доступі, то його завжди можна буде здійснити.

 








Дата добавления: 2015-08-26; просмотров: 708;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.