Виртуални методи

Полиморфизмът е един от най-важните механизми на ООП. Полиморфизмът се реализира с помощта на наследяване на класове и виртуални методи.

Полиморфизмъте, че едно и също извикване на метод изпълнява различни действия в зависимост от типа, посочен от указателя във всеки момент от време.

Помислете за пример за йерархия на класове, където всеки клас има метод със същото име.

Каква функция ще бъде изпълнена в следния ред:

ptr->покажи(); Base::show() или derv1::show()?

В този случай компилаторът избира метод, който отговаря на типа указател (Base::show()).

Този процес се наричаранно свързване.

C++ прилага механизма накъсно свързване, когато разрешаването на препратки към методсе случва на етапа на изпълнение на програмата, в зависимост от конкретния тип на обекта, който е извикал метода. Този механизъм се реализира с помощта на виртуални методи [2].

За да дефиниратевиртуален метод, използвайте спецификатораvirtual,напр.:

виртуално празно шоу()

Препоръчва се деструкторите да бъдат виртуални, за да се гарантира правилно освобождаване на памет от под динамичен обект, тъй като в този случай деструкторът, съответстващ на действителния тип на обекта, ще бъде избран по всяко време.

Деструкторът предава размера на обекта на операциятаdelete.

Класове контейнери

Контейнерните класове са класове, предназначени да съхраняват данни, организирани по определен начин.

Контейнеритеса обекти, които съдържат други обекти от същия тип.

За всеки тип контейнер са определени методи за работа с неговите елементи, независимо отспецифичен тип данни, които се съхраняват в контейнер, така че един и същи вид контейнер може да се използва за съхраняване на различни типове данни. Тази функция се реализира с помощта на шаблони на класове.

Използването на контейнери може значително да увеличи надеждността на програмите, тяхната преносимост и гъвкавост, както и да намали времето за тяхното разработване.

Развитието на обектно-ориентираното програмиране доведе до създаването на широк набор от библиотеки.

STL/CLR библиотеката е пакетирана библиотека със стандартни шаблони (STL), която е част от стандартната библиотека на C++.

ATL означава Active Template Library. Това е библиотека с класове и шаблони за разработване на ваши собствени компоненти. Едно от приложенията на тази библиотека е да създавате свои собствени ActiveX контроли. Например, като използвате библиотеката ATL, можете да създадете свой собствен потребителски бутон (да речем, кръгъл) и след това да го използвате в програми.

БиблиотекаMFC(Microsoft Foundation Classes) е предназначена предимно за създаване на приложения с потребителски интерфейс (прозорци, диалогови прозорци и др.).

Библиотеката MFC капсулира много функции на API (интерфейс за програмиране на приложения), които изпълняват всички необходими системни действия, като разпределяне на памет, показване на екрана, създаване на прозорци и т.н. Библиотеката MFC е разработена, за да опрости задачите, пред които е изправен програмистът.