Комсомольский-на-Амуре Государственный Технический
по дисциплине «Программирование»
Тема: ”Разработка класса пользователя ”
Выполнил: Кормин И.А.
Группа: 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
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.