Разработка класса пользователя. Новый поток поток ввода/вывода

Страницы работы

Содержание работы

Министерство образования Российской Федерации

Комсомольский-на-Амуре Государственный Технический

Университет

Кафедра математического обеспечения и применения ЭВМ

Лабораторная работа №15

по дисциплине «Программирование»

Тема: ”Разработка класса пользователя ”

Выполнил: Кормин И.А.

Группа: 4ВС-1

Проверил: Петров Ю.А.

2005 год

15. РАЗРАБОТКА КЛАССА ПОЛЬЗОВАТЕЛЯ

Цель работы:

·  Научиться разрабатывать простейшие классы пользователя;

·  Научиться пользоваться новым потоком ввода / вывода;

·  Научиться использовать манипуляторы при форматированном вводе / выводе.

      Задание: Разработать собственный класс, в котором имеются закрытые и открытые переменные и функции, конструкторы и деструктор. Конструкторы должны инициализировать переменные различными способами. Использовать перегрузку функций и операций. Предусмотреть ввод / вывод  с использованием потока iostream с использованием манипуляторов. Предметная область может быть любая.

Текст программы:

#include <string.h>

#include <iostream.h>

#include <stdlib.h>

#include <conio.h>

class stroka

{          // Скрытые от внешнего доступа данные:

char *ch;        // Указатель на текстовую строку

int len;           // Длина текстовой строки

public:           // Общедоступные функции:

// Конструкторы объектов класса:

// Создает объект как новую пустую строку:

stroka(int N = 80)

// Строка не содержит информации:

{

len=0;

ch = new char[N + 1]; // Память выделена для массива

ch[0] = '\0';

}

// Создает объект по заданной строке:

stroka (const char *arch)

{

len = strlen(arch);

ch = new char[len+1];

strcpy(ch,arch);

}

int& len_str(void){return len;};      //Возвращает ссылку на длину строки

char *string(void){ return ch;};       //Возвращает указатель на строку

void display(void) // Печатает информацию о строке

{

cout << "\nДлина строки: " << len;

cout << "\nСодержимое строки: " << ch;

}

// Деструктор - освобождает память объекта:

~stroka() { delete [] ch; }

};

// Прототип функции для перегрузки операции '+'

stroka& operator + (stroka& a, stroka& b);

void main (void)

{

clrscr();

char *one, *two;

one=new char[30];

two=new char[30];

cout<<"Введите 1-е слово:";

cin>>one;

cout<<"Введите 2-е слово:";

cin>>two;

stroka X(one);

stroka Y(two);

stroka C;

C=X+Y;

C.display();

}

// Перегрузка операции + на строковые операнды

stroka& operator + (stroka& a, stroka& b)

{         

// Длина строки-результата:

int ii = a.len_str() + b.len_str ();

stroka *ps;        // Вспомогательный указатель

// Создаем объект в динамической памяти:

ps = new stroka (ii);

// Копируем строку из 'а':

strcpy(ps->string(), a.string());

// Присоединяем строку из 'b':

strcat(ps->string(), b.string());

ps->len_str() = ii; // Записываем значение длины строки

return *ps;        // Возвращаем новый объект stroka

}

Результат выполнения программы:

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
46 Kb
Скачали:
0