Среда, 16.07.2025, 13:27
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
.:: Меню ::.
.:: Категории каталога ::.
Разное [5]
Различные темы по программированию
Пакет SWT [4]
Практикуемся в написании оконных приложений на Java
Среды разработки, компиляторы и т.п [3]
Сравнения, описания, плюсы и минусы сред разработки. Сравнение компиляторов.
Java [8]
Объектно-ориентированные соображения.
Си++ [19]
Коротко и ясно
Ассемблер [6]
Машинные коды, побитно :)
Форма входа
.:: Поиск ::.
.:: Дополнительно ::.
    Хостинг от Loqo.ru
             .:: Коментируем ::.
Главная » Статьи » Текстовый материал » Си++

Лабораторная №6
Ну вот наконец-то, пример напрямую касающийся Си++
Code

#include <iostream>
#include <stdio.h>

//---- создадим класс Stroka --------
class Stroka
{
char str[80];
public:
Stroka (char*);
Stroka() {}
Stroka (const Stroka&);
Stroka& operator=(const Stroka&);
Stroka& operator+(const Stroka&);
int operator==(const Stroka&);
int dlina();
void vvod();
void vyvod();
};
//-----------------------------------

Stroka::Stroka (char *string)
{
strcpy(str,string);
}

Stroka::Stroka(const Stroka& s)
{
strcpy(str, s.str);
}

Stroka& Stroka::operator =(const Stroka& s)
{
strcpy(str,s.str);
return *this;
}

Stroka& Stroka::operator +(const Stroka& s)
{
strcpy(str,s.str);
return *this;
}

int Stroka::operator ==(const Stroka& s)
{
if ((strcmp(str, s.str))==0)
return 1;
else
return 0;

}

int Stroka::dlina()
{
return strlen(str);
}

void Stroka::vvod()
{
std::cout << "Imput a string: ";
std::cin >> str;
}

void Stroka::vyvod()
{
std::cout << str << std::endl;
}

void main(void)
{
Stroka s1("qwert"), s3, s4(s1), s5;
s3.vvod();
s3="asdfg";
s3.vyvod();
s5=s1+s3+s4;
std::cout<<"dlina s5 = "<<s5.dlina() << std::endl;
s5.vyvod();
if(s1==s5)
std::cout << "stroki s1 and s5 equ" << std::endl;
else
if (s1==s4)
std::cout << "stroki s1 and s4 equ" << std::endl;
system ("pause");
}

Это класс Stroka.
Такие классы применяются в языках высокого уровня как обёртки к элементарным типам данных.
Например в языке Java, C#, да и в C++ тоже есть класс String;
Это простой пример, много чего не учтено и т.д.
Оборачивать будем массив str[80], по умолчанию эта переменная находится в области приватных данных, поэтому обращаться к ней могут только объекты этого класса.
Первый конструктор просто копирует строку, введённую в его параметрах в массив str.
Второй конструктор перемещает массив str объекта указанного в параметрах в собственный массив str. (Это в самом деле может вызвать взрыв мозга по началу)
Далее идёт переопределение операций над объектом.
Конкатенация и присвоение работает опять же с копированием строк strcpy, а сравнение с помощью strcmp
Далее метод определяющий длину слова и метод для ввода строки.
Всё просто и элегантно.
Можно забыть про всякие там strcpy и т.д.
Просто создаёш объект класса Stroka, пишешь = "строка" и всё !
Далее в функции main видно как можно поюзать данный класс.

Удачных экспериментов.

Категория: Си++ | Добавил: C0demaker (27.01.2010)
Просмотров: 1268 | Рейтинг: 0.0/0
Всего комментариев: 0

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ant1 © 2025