ustify"> Якщо клас оголошений як базовий для іншого класу зі специфікатором доступу private, тоді public і protected члени базового класу доступні як private члени похідного класу.
Одним з основних переваг public-спадкування є те, що покажчик на класи-спадкоємці може бути неявно перетворений в покажчик на базовий клас, тобто для прикладу вище можна написати:
* a=new B ();
Мова програмування підтримує поліморфізм, якщо класи з однаковою специфікацією можуть мати різну реалізацію - наприклад, реалізація класу може бути змінена в процесі успадкування.
Коротко сенс поліморфізму можна виразити фразою: «Один інтерфейс, безліч реалізацій».
Поліморфізм дозволяє писати більш абстрактні програми і підвищити коефіцієнт повторного використання коду. Загальні властивості об'єктів об'єднуються в систему, яку можуть називати по-різному - інтерфейс, клас. Спільність має зовнішнє і внутрішнє вираз:
зовнішня спільність проявляється як однаковий набір методів з однаковими іменами і сигнатурами (іменами методів, типами аргументів і їх кількістю);
внутрішня спільність - однакова функціональність методів. Її можна описати інтуїтивно або виразити у вигляді суворих законів, правил, яким повинні підкорятися методи. Можливість приписувати різну функціональність одному методу (функції, операції) називається перевантаженням методу (перевантаженням функцій, перевантаженням операцій).
В об'єктно-орієнтованих мовах клас є абстрактним типом даних. Поліморфізм реалізується за допомогою успадкування класів і віртуальних функцій. Клас-нащадок успадковує сигнатури методів класу-батька, а реалізація, в результаті перевизначення методу, цих методів може бути іншою, що відповідає специфіці класу-нащадка. Інші функції можуть працювати з об'єктом як з екземпляром класу-батька, але якщо при цьому об'єкт насправді є екземпляром класу-нащадка, то під час виконання буде викликаний метод, перевизначення в класі-нащадку. Це називається пізнім зв'язуванням.
Клас-нащадок сам може бути батьком. Це дозволяє будувати складні схеми наследованія- деревовидні або сетевідние. [1 [, [2]
Абстрактні (або чисто віртуальні) методи не мають реалізації взагалі (насправді деякі мови, наприклад C ++, допускають реалізацію абстрактних методів у батьківському класі). Вони спеціально призначені для наслідування. Їх реалізація повинна бути визначена в класах-нащадках.
Приклад поліморфізму в С ++: ClassOne {: num;: () {num=0;}; func () {num ++; cout lt; lt; num lt; lt; n raquo ;;};
}; ClassTwo: public ClassOne {: func () {num--; cout lt; lt; num lt; lt; n raquo ;;};
}; main () {* One=new ClassOne; * Two=new ClassTwo; gt; func ();// Оригінальний метод gt; func (); }//Поліморфний метод
3. Структури
Структурою в мові C називається сукупність логічно пов'язаних змінних різних типів, згрупованих під одним ім'ям для зручності подальшої обробки.
Структура - це спосіб зв'язати воєдино дані різних типів і створити користувальницький тип даних.
Структура - тип даних, що задається користувачем. У загальному випадку при роботі зі структурами слід виділити чотири моменти:
оголошення і визначення типу структури,
оголошення структурної змінної,
ініціалізація структурної змінної,
використання структурної змінної.
Визначення типу структури представляється у відеID
{
lt; тип gt; lt; ім'я 1-го елемента gt ;;
lt; тип gt; lt; ім'я 2-го елемента gt ;;
............
lt; тип gt; lt; ім'я останнього елемента gt ;;
};
Визначення типу структури починається з ключового слова struct і містить перелік оголошень, укладених у фігурні дужки. За словом struct слідує ім'я типу, зване тегом структури (tag - ярлик, етикетка). Елементи списку оголошень називаються членами структури або полями. Кожен елемент списку має унікальне для даного структурного типу ім'я. Однак слід зауважити, що одні й ті ж імена полів можуть бути використані в різних структурних типах.
Визначення типу структури являє собою шаблон (template), призначений для створення структурних змінних.
Оголошення змінної структурного типу має наступний вигляд: ID var1. [3]
4. Стандартна бібліотека шаблонів
Стандартн...