Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМИиП - Лабораторный практикум на Visual C++ 20...doc
Скачиваний:
2
Добавлен:
13.08.2019
Размер:
650.75 Кб
Скачать

Int operator!(); //элемент-функция класса

friend istream& operator>>(istream& is, akt& z);//внешние

friend ostream& operator<<(ostream& os, akt& z);//функции

};

Добавить в файл кодов lab4.cpp тексты функций-операций

operator!(), operator>>, operator<<, а также - функции main():

//файл кодов lab4.cpp

#include “stdafx.h”

#include “lab4.h”

Int akt::operator!()

{

return(tabn[0]==’\0’);

}

istream& operator>>(istream& is, akt& z)

{

cout<<”Таб. номер :”;

is>>z.tabn;

cout<<”Объем работ:”;

is>>z.objem;

return(is);

}

ostream& operator<<(ostream& os, akt& z)

{

os<<”Таб. номер:”<<z.tabn<<’\n’;

os<<”Объем :”<<z.objem<<’\n’;

return(os);

}

int _tmain(int args, _TCHAR* argv[])

{

akt obj;

if (!obj)

cout<<”Объект пустой, введите данные:\n”;

cin>>obj;

if (!!obj) cout<<”Объект имеет данные:\n”;

cout<<obj;

return 0;

}

Компиляция, запуск и тестирование приложения

Выбрать команду Build->Build lab1. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start Without Debugging - запуск на выполнении программы.

lab5 «Преобразование типов конструктором»

Преобразование типов, определяемые классом, выполняется конструктором преобразования или функцией-операцией преобразования.

Цель работы – преобразование из типа аргумента в тип класса с помощью конструктора преобразования.

Условие задачи: сложить комплексное число с вещественным числом с получением комплексного числа.

Пусть имеется класс complex с перегруженной операцией (+). Добавим в класс complex конструктор преобразования с аргументом типа float.

Создание проекта консольного приложения

Выполнить этапы согласно п. 2.1 и ввести имя проекта lab5.

Создается исходный файл lab5.cpp, который будет содержать одну пустую функцию main():

int _tmain(int args, _TCHAR* argv[])

{return 0;}.

Создание и добавление исходных файлов в проект

Проект должен содержать файл заголовков lab5.h и файл кодов lab5.cpp.

Создать файл lab5.h, ввести текст файла и сохранить его.

//файл заголовков lab5.h

#include <iostream>

using std::cout;

class complex

{

public:

float d, m;

complex () {d=m=0;}

complex(float x, float y) {d=x; m=y;}

complex operator +(complex& x);

complex(float x) {d=x; m=0;} //конструктор преобразования

};

Добавить в файл кодов lab5.cpp тексты функции-операции

operator+() и функции main().

//файл кодов lab5.cpp

#include "stdafx.h"

#include "lab5.h"

complex complex::operator +(complex& x)

{

complex y;

y.d=d+x.d;

y.m=m+x.m;

return(y);

}

int _tmain(int args, _TCHAR* argv[])

{

complex obj1(0,1);

complex a(4.5);

obj1=obj1+a; //a преобразуется из float в complex

cout<<obj1.d<<" "<<obj1.m<<'\n'; //результат: 4.5 1

return 0;

}

Компиляция, запуск и тестирование приложения

Выбрать команду Build->Build lab1. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start Without Debugging - запуск на выполнении программы.

lab6 «Преобразование типов функцией-операцией»

Цель работы – преобразование из типа класса в тип аргумента с помощью функции-операции преобразования.

Условие задачи: сложить комплексное число с вещественным числом с получением вещественного числа.

Пусть имеется класс complex с перегруженной операцией (+). Заменим в предыдущей работе в классе complex конструктор преобразования на функцию-операцию преобразования с аргументом типа float.

Создание проекта консольного приложения

Выполнить этапы согласно п. 2.1 и ввести имя проекта lab6.

Создается исходный файл lab6.cpp, который будет содержать одну пустую функцию main():

int _tmain(int args, _TCHAR* argv[])

{return 0;}.

Создание и добавление исходных файлов в проект

Проект должен содержать файл заголовков lab6.h и файл кодов lab6.cpp.

Создать файл lab6.h, ввести текст файла и сохранить его.

//файл заголовков lab6.h

#include <iostream>

using std::cout;

class complex

{

public:

float d, m;

complex () {d=m=0;}

complex(float x, float y) {d=x; m=y;}

complex operator +(complex& x);

operator float()

{

return(d);}

};

Добавить в файл кодов lab6.cpp тексты функции-операции

operator+() и функции main():

//файл кодов lab6.cpp

#include "stdafx.h"

#include "lab6.h"

complex complex::operator +(complex& x)

{

complex y;

y.d=d+x.d;

y.m=m+x.m;

return(y);

}

int _tmain(int args, _TCHAR* argv[])

{

complex obj1(0,1);

float a=4.5;

float b=obj1+a; //obj1 преобразуется из complex в тип float

cout<<b<<'\n'; //результат: 4.5

return 0;

}

Компиляция, запуск и тестирование приложения

Выбрать команду Build->Build lab1. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start Without Debugging - запуск на выполнении программы.

lab7 «Виртуальные элементы-функции»

Цель работы – изучения механизма виртуальных функций.

Виртуальная функция – это элемент-функция базового класса в иерархии наследования со спецификатором virtual , переопределенная в производных классах и вызываемая в зависимости от класса через указатель или ссылку на базовый класс.

Условие задачи: имеется иерархия трех классов cl1->cl2->cl3, в каждом из которых переопределена функция vyvod(); составить программу последовательного вызова функций vyvod() этих классов.

Создание проекта консольного приложения

Выполнить этапы согласно п. 2.1 и ввести имя проекта lab7.

Создается исходный файл lab7.cpp, который будет содержать одну пустую функцию main():

int _tmain(int args, _TCHAR* argv[])

{return 0;}.

Создание и добавление исходных файлов в проект

Проект должен содержать файл заголовков lab7.h и файл кодов lab7.cpp.

Создать файл lab7.h, ввести текст файла и сохранить его.

//файл заголовков lab.h

#include <iostream>

using std::cout;

class cl1

{ public: virtual void vyvod(); };

class cl2:public cl1

{ public: void vyvod(); };

class cl3:public cl2

{ public: void vyvod(); };

Добавить в файл кодов lab7.cpp тексты функций vyvod() этих классов и функции main():

//файл кодов lab7.cpp

#include "stdafx.h"

#include "lab7.h"

void cl1::vyvod() { cout<<"Работники предприятия\n"; }

void cl2::vyvod() { cout<<"Работники цеха\n"; }

void cl3::vyvod() { cout<<"Рабочие участка\n"; }

int _tmain(int args, _TCHAR* argv[])

{

cl1 obj1; cl2 obj2; cl3 obj3;

cl1 *p[3]; //cl1& r1=obj1; ссылки

p[0]=&obj1; //cl1& r2=obj2;

p[1]=&obj2; //cl1& r3=0bj3; //Результат решения:

p[2]=&obj3; //r1.vyvod();//Работники предприятия

for (int i=0;i<3;i++) //r2.vyvod(); //Работники цеха

p[i]->vyvod(); //r3.vyvod(); //Рабочие участка

}

Компиляция, запуск и тестирование приложения

Выбрать команду Build->Build lab1. Выполняется компиляция и компоновка программы. Выбрать команду Debug ® Start Without Debugging - запуск на выполнении программы.