Ну вот наконец-то, пример напрямую касающийся Си++ 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 видно как можно поюзать данный класс. Удачных экспериментов.
|