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