«Создание класса с перегрузкой некоторых операций»
Доцент каф. ЭМИС, к.ф.-м.н. Студент гр.890
__________Е.А. Панасенко _________А.О. Гилетий
Томск - 2012
Цель работы: изучить возможности программирования классов на языке С++, получить практические навыки использования перегрузки операторов.
Задание:1.В рамках консольного приложения создать класс А с полями а и b и свойством с. Свойство – значение выражения над полями а и b (тип полей – float, выражения - *=, ++(префиксный), /). Свойство с описать как функции-члены. Конструктор оставить по умолчанию. Проследить, чтобы поля а и b напрямую в других классах были недоступны.
2.Написать функции перегрузки операций из п.1.
Задание 1:
#include <iostream>
# include <math.h>
using namespace std;
class A //создание класса
{
private: //объявление переменных (открытые)
float c;
public: // объявление переменных (закрытые)
A()
{ c = 0; }
A(float cc)
{ c = cc; }
void inc(A a, A b) //функции-члены
{ c = a.c+1;}
void del(A a, A b)
{ c = a.c / b.c; }
void pr(A a, A b)
{ c = a.c;
c*=b.c;}
void display()
{ cout << c; }
};
int main()
{
A A1(8);
A A2(12); // описание объектов класса
A A3;
A A4;
A A5;
A3.inc(A1, A2);
A4.del(A1, A2);
A5.pr(A1,A2);
cout << "\ninc A3 = ";
A3.display();
cout <<"\ndel A4 = ";
A4.display();
cout <<"\npr A5 = ";
A5. display();
cout << endl;
return 0;
}
Задание 2:
#include <iostream>
using namespace std;
class A //создание класса
{
private: //объявление переменных
int i;
public:
int getI () const
{
return i;
}
A (int v) //конструктор с параметрами
{
i = v;
}
A operator/(int v) //объявление функций перегрузки операторов
{
A i1 (i / v); // описание функций перегрузки операторов
return i1;
}
A operator=(int v)
{
A i1 (i = v);
return i1;
}
A operator++(int v)
{
A i1 (++i);
return i1;
}
};
int main()
{
A a (10); //описание объектов класса
A b= a/2; // неявный вызов функции перегрузки
A c = a;
A d = a++;
cout << b.getI () << endl;
cout << c.getI () << endl;
cout << d.getI() << endl;
return 0;
}
Вывод. В данной лабораторной работе были изучены возможности программирования классов, получены навыки использования перегрузки функций операторов.