Lab23
.docxЛабораторная работа № 23
(№ 9 по списку и инд.вариант t= 9)
Студента группы ИТ 14-1
Красовский Абхай Владленович
Использование виртуальных функций и указателей для работы с объектами классов
Цель работы: выучить и научится использовать виртуальные функции при создании иерархии классов при простой наследовании в языке C++, а так же указатели для работы с объектами классов
Ход работы
Соответственно к индивидуальному заданию лабораторной №22 разработать алгоритм работы с объектами базовых и производных классов с использованием указателей на базовый и производный класс.
Вариант |
Базовый класс |
Производный класс |
Производный класс |
|
Топливо |
Нефть |
Бензин |
1.Код
#include <iostream>
#include <conio.h>
using namespace std;
class Fuel
{
protected:
int weight;
private:
int value;
public:
void setWeight(int w){weight = w;}
int getWeight(){return weight;}
void setValue(int v){value = v;}
int getValue(){return value;}
virtual void show(){cout << "Fuel" << endl;}
};
class Oil : public Fuel
{
private:
char* name;
public:
void setName(char* n){name = n;}
char* getName(){return name;}
virtual void show(){cout << "Oil" << endl;}
};
class Gasoline : public Fuel
{
private:
char* name;
public:
void setName(char* n){name = n;}
char* getName(){return name;}
virtual void show(){cout << "Gasoline" << endl;}
};
void main()
{
setlocale(LC_ALL, "Russian");
Oil a;
a.setName("Нефть");
a.setValue(65);
a.setWeight(3);
cout << a.getName() << endl;
cout << "Цена: " << a.getValue() << endl;
cout << "Вес: " << a.getWeight() << endl;
Gasoline b;
b.setName("Бензин");
b.setValue(16);
b.setWeight(6);
cout << b.getName() << endl;
cout << "Цена: " << b.getValue() << endl;
cout << "Вес: " << b.getWeight() << endl;
Fuel f;
Fuel *pf;
pf = &a;
pf->show();
pf = &b;
pf->show();
pf = &f;
pf->show();
_getch();
}
2.Результат
3.Вывод: выучил и научился использовать виртуальные функции при создании иерархии классов при простой наследовании в языке C++, а так же указатели для работы с объектами классов