Отчет_лаб5 (1077299)
Текст из файла
Московский государственный технический университет им. Н.Э.Баумана
_________________________________________________________________
Лабораторная работа №5 по дисциплине ПППО
«Перегрузка функций и операций »
ИСПОЛНИТЕЛЬ: | |
студент группы ИУ5-63 | _____________________ |
Абламцев Д.М. | "__"_____________2006 г. |
Москва - 2006
________________________________________________________________
-
Цель работы
Целью лабораторной работы является изучение механизмов перегрузки функций и операций при объектно-ориентированном программировании на языке С++. Студенты должны освоить основные способы перегрузки и их особенности, продемонстрировать навыки и знания по перегрузке одноместных и двухместных операция и показать на примере простых собственных классов использование этих возможностей с помощью демонстрационного примера.
Код задания: 1.1, 2.1, 3.1, 4.1
-
Порядок работы:
В лабораторной работе в изложенном ниже порядке должны быть отражены следующие требования:
-
Описание классов и функций в отдельном файле (lab5.hpp)
-
Все задания должны быть оформлены в виде наглядного вывода (в cout), например, для демонстрации перегрузки функций вывод может быть таким:
// Перегрузка функций
cout << "Перегрузка функций"<< endl;
cout << "Сумма = "<< Sum (2 , 2) <<endl;
cout << "Сумма = "<< Sum (2.1f , 2.1f) <<endl;
cout << "Сумма = "<< Sum (2.0 , 2.1 ) <<endl;
cout << "Сумма = "<< Sum ('c' , '\1' ) <<endl;
getch();
-
При перегрузке функций тип простой функции выбирается из списка вариантов (см. ниже). Во всех функциях задаются 2 параметра однотипные, для выполнения операций (сложения, вычитания, деления и умножения). Перегрузка выполняется для типов параметров указанных в списке вариантов (int , char, long, double, float).
-
При демонстрации шаблонов необходимо указать шаблон для типа функции, определенной номером варианта (см. ниже). Иллюстрация вывода результата выполняется аналогично (см. выше) – типы - ( int , char, long, double, float) для всех.
-
При демонстрации функции с параметрами по-умолчанию, задается функции Summ, которая складывает три параметра (тип int). Нужно показать четыре случая вызова функции (нет параметров, один, два и три). Иллюстрация вывода результата выполняется аналогично (см. выше).
-
Перегрузка внутренней одноместной операции выполняется в новом простом классе (типы: int, float , long). Тип и обозначение операции определяется с вариантом. Класс называется Test.
-
Перегрузка внутренней двухместной операции выполняется в новом простом классе (типы: int, float , long). Тип и обозначение операции определяется с вариантом. Класс называется Test.
-
Перегрузка внешней одноместной операции выполняется в новом простом классе (типы: int, float , long). Тип и обозначение операции определяется с вариантом. Класс называется Test1.
-
Перегрузка внешней двухместной операции выполняется в новом простом классе (типы: int, float , long). Тип и обозначение операции определяется с вариантом. Класс называется Test1.
-
Перегрузка операции вывода выполняется внешней (friend) функцией для классов Test и Test1.
-
Перечень ошибок исправленных при отладке программы
Проблем замечено не было.
4. Листинги программ.
-
lab5.cpp
#include <iostream.h>
#include "lab5.hpp"
void main(void)
{
cout << "Перегрузка функции(ф-ия сложения):" << endl;
cout << "Сумма(int 3, int 10)=" << sum(3,10) << endl;
cout << "Сумма(char 'a', int '\\n')=" << sum('a','\n') << endl;
cout << "Сумма(long 3, long 70000)=" << sum(3l,70000) << endl;
cout << "Шаблоны(ф-ия максимума):" << endl;
cout << "Максимум(int 3, int 4)=" << max(3,4) << endl;
cout << "Максимум(char '3', char '4')=" << max('3','4') << endl;
cout << "Максимум(float 3.22, int 0.3)=" << max(3.22,0.3) << endl;
cout << "Функция с параметрами по умолчанию" << endl;
cout << "int summ(int a=1, int b=2, int c=3)" << endl;
cout << "summ()=" << summ() << endl;
cout << "sum(10)=" << summ(10) << endl;
cout << "summ(10, 11)=" << summ(10, 11) << endl;
cout << "sum(10, 11, 12)=" << summ(10, 11, 12) << endl;
cout << "Работа с классом Test" << endl;
Test a1(1), a2(2);
cout << "a1=" << a1 << endl << "a2=" << a2 << endl;
cout << "a1+a2=" << a1+a2 << endl;
cout << "a1++=" << a1++ << endl;
cout << "Работа с классом Test" << endl;
Test1 b1(1), b2(2);
cout << "b1=" << b1 << endl << "b2=" << b2 << endl;
cout << "b1+b2=" << b1+b2 << endl;
cout << "b1++=" << b1++ << endl;
}
-
lab5.hpp
template <class T>
T max(T x1, T x2)
{
if(x1>x2)
return x1;
else return x2;
}
int sum(int x1, int x2)
{
return x1+x2;
}
long sum(long x1, long x2)
{
return x1+x2;
}
char sum(char x1, char x2)
{
return x1+x2;
}
int summ(int a=1, int b=2, int c=3)
{
return a+b+c;
}
class _CLASSTYPE Test
{
public:
Test(int i=0) {inum=i;}
~Test() {}
Test operator+(const Test& rhs) ;
Test& operator++() { inum++; return *this;}
Test& operator++(int){ return operator++();}
friend ostream& operator<<(ostream& os, Test& obj);
private:
int inum;
};
Test Test::operator+(const Test& rhs)
{
Test tst(inum+rhs.inum);
return tst;
}
ostream& operator<<(ostream& os, Test& obj)
{
return os << obj.inum;
}
class _CLASSTYPE Test1
{
public:
Test1(int i=0) {inum=i;}
~Test1() {}
friend Test1 operator+(const Test1& lhs, const Test1& rhs) ;
friend Test1& operator++(Test1& obj);
friend Test1& operator++(Test1& obj, int);
friend ostream& operator<<(ostream& os, Test1& obj);
private:
int inum;
};
Test1& operator++(Test1& obj)
{
obj.inum++;
return obj;
}
Test1& operator++(Test1& obj, int)
{
return operator++(obj);
}
Test1 operator+(const Test1& lhs, const Test1& rhs)
{
Test1 tst(lhs.inum+rhs.inum);
return tst;
}
ostream& operator<<(ostream& os, Test1& obj)
{
return os << obj.inum;
}
4
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.