Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Не підтверджено.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.08 Mб
Скачать

Void Show(char*s) {cout« s « string « endl;}

};

strClass strClass::operator+(strClass obj)

{

strClass tmp; // Створення тимчасового об'єкта

strcpy(tmp.string, string); strcat(tmp.string, obj.string);

return tmp; // Повертає модифікований тимчасовий об'єкт

}

strClass strClass::operator=(strClass obj)

{

strcpy(string, obj.string);

// Повернення модифікованого об'єкта операнда, адресованого покажчиком return *this;

}

strClass strClass::operator=(char *str)

{

strClass tmp; // Створення тимчасового об'єкта

strcpy(string, str); strcpy(tmp.string, string);

return tmp; // Повертає модифікований тимчасовий об'єкт

}

strClass strClass::operator+(char *str)

{

strClass tmp; // Створення тимчасового об'єкта

strcpy(tmp.string, string); strcat(tmp.string, str);

return tmp; // Повертає модифікований тимчасовий об'єкт

}

Int mainO

{

strClass ОЬІА("Привіт"), ObjBfBciM"), ObjC;

ObjA.ShowfA:");

ObjB.Show("B:");

ObjC = ObjA + ObjB;

ObjC.Show("C=A+B:");

ObjA = "для програмування, тому що";

ObjA.ShowfA:");

ObjB = ObjC = "C++ це супер";

ObjC = ObjC +"" + ObjA +"" + ObjB;

ObjC.ShowfC:");

getchO; return 0;

}

Внаслідок виконання ця програма відображає на екрані такі результати: А: Привіт В: усім

С=А+В: Привіт усім

А: для програмування, тому що

С: C++ це супер для програмування, тому що C++ це супер

Перш ніж переходити до наступного розділу, спробуйте переконатися у тому, що до кінця розумієте, як отримано ці результати. Тепер постарайтеся також са­мостійно визначати ще деякі інші операції над рядками. Наприклад, спробуйте визначити операцію видалення підрядка на основі оператора вилучення Зокре­ма, якщо рядок об'єкта А містить фразу "Це важкий-важкий тест", а рядок об'єкта В - фразу "важкий", то обчислення виразу А-В дасть у підсумку "Це - тест". У цьому ви­падку з початкового рядка були видалені всі входження підрядка "важкий". Визнач­те також "дружню" функцію, яка б давала змогу рядку, що завершується нулем, знаходитися зліва від оператора конкатенації "+". Нарешті, додайте у програму код, який забезпечує контроль за помилками - виходу індексу за межі масиву.

Вартоа нати'.аДля створюваних власних класів завжди є сенс експеримен­тувати з перевизначенням операторів. Як показують приклади цього розділу, механізм перевизначення операторів можна використовувати для залучення нових типів даних у середовище програмування. Це один з найпотужніших за­собів мови програмування С++.

Розділ 5. ОРГАНІЗАЦІЯ МЕХАНІЗМІВ УСПАДКУВАННЯ В КЛАСАХ

Успадкування - один з трьох фундаментальних механізмів об'єктно-орієнто- ваного програмування, оскільки саме завдяки йому уможливлюється створення ієрархічних класифікацій. Використовуючи механізми успадкування, можна роз­робити загальний клас, який визначає характеристики, що є властиві множині вза­ємопов'язаним між собою елементам. Цей клас потім може успадковуватися інши­ми, вузькоспеціалізованими класами з додаванням у кожен з них своїх, властивих тільки їм унікальних особливостей.

У стандартній термінології мови програмування С++ початковий клас нази­вається базовим. Клас, який успадковує базовий клас, називається похідним. По­хідний клас можна використовувати як базовий для іншого похідного класу. За та­ким механізмом якраз і будується багаторівнева ієрархія класів.