Приклад використання віртуальних функцій

Тепер, вже знаючи, що таке віртуальні функції, спробуємо їх використати. В програмі 20.18 попередньої теми ми створили клас person. Наступна програма 22.4 використовуватиме той сам клас person, а також два нові класи: student і professor. Обидва ці похідні класи містять метод isoutstanding(), який дає змогу відібрати студенів з середнім балом, вищим за заданий, а також викладачів (професорів), з кількістю публікацій, більшою за задану.

 

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

class person

{protected:

char name[40];

public:

void getname()

{cout<<"Input name:"; cin>>name;}

void putname()

{cout<<"Name:"<<name<<endl;}

virtual void getdata()=0;//Чиста віртуальна функція

virtual int isoutstanding()=0;//Чиста віртуальна функція

};

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

class student:public person

{private:

float gps;

public:

void getdata()

{person::getname();

cout<<"Середній бал: ";cin>>gps;

}

int isoutstanding()

{return(gps>3.5)?1:0;}

};

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

class professor: public person

{private:

int numpubs;

public:

void getdata()

{person::getname();

cout<<"Число публікацій:";cin>>numpubs;}

 

int isoutstanding()

{return(numpubs>100)?1:0;}

};

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

 

int main()

{clrscr();

person* persPtr[100];

char choice;

int n=0;

do{

cout<<"Студент(s) чи професор(p):»;

cin>>choice;

if(choice==’s’)

persPtr[n]=new student;

else

persPtr[n]=new professor;

persPtr[n++]->getdata();

cout<<”Continue y/n”;

cin>>choice;

} while (choice==’y’);

for(int j=0;j<n;j++)

{persPtr[j]->putname();

if(persPtr[j]->isoutstanding())

cout<<”Outrange\n”;

}

bioskey(0);

return 0;

}

Програма 22.4

Розберемо деякі особливості цієї програми.

 

Класи

Клас person – абстрактний, оскільки він містить чисті віртуальні функції.

virtual void getdata()=0;//Чиста віртуальна функція

virtual int isoutstanding()=0;//Чиста віртуальна функція

Ніякі об’єкти цього класу не можуть бути створені, він існує лише як базовий для класів student і professor. Ці породжені класи додають нові поля даних до базового класу: student – поле gps типу float, що містить середній бал студента; professor – поле numpubs цілого типу, що містить число публікацій педагога.

Функція isoutstanding()

Ця функція оголошена чистою віртуальною в класі person. В похідних класах вона оголошена як ціла і повертає значення 1 у випадку виконання заданої умови, та 0 – в іншому випадку.

 








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


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

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

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

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