зволений доступ до всіх полів класу. p align="justify"> Методи оголошуються в описі класу після оголошення полів. Існують декілька типів методів, що розрізняються за механізмом успадкування. p align="justify">
Статичні методи Статичні методи при їх перевизначенні в класах-нащадках повністю перекриваються. Для статичних методів можна повністю змінити оголошення методу. Типово методи вважаються статичними, тому для їх оголошення не потрібно ніяких додаткових команд. Визначення адрес статичних методів проводиться на етапі компіляції. При виклику статичного методу виконується процедура або функція, яка формулюється тільки типом об'єктної змінної. Тип самого об'єкта, на який дана змінна посилається, що не приймається до уваги. Тому використання статичних методів не дозволяє реалізувати концепцію поліморфізму.
Віртуальні і динамічні методи
При зверненні до віртуальних і динамічних методів викликається процедура або функція визначається тільки в момент звернення. Такий механізм називається пізнім зв'язуванням. Саме віртуальні та динамічні методи дозволяють повною мірою реалізувати концепцію поліморфізму. При оголошенні віртуальних і динамічних методів використовуються директиви virtual і dynamic, відповідно. Зупинимося на основних можливостях цих методів. p align="justify"> В· При виклику віртуальних і динамічних методів виконувана процедура або функція визначається за типом фактичного параметра. Для цього використовується таблиця віртуальних методів (Virtual Method Table, VMT) у разі віртуальних методів і таблиця динамічних методів (Dynamic Method Table, DMT) у разі динамічних.
В· Таблиця віртуальних методів створюється для кожного об'єктного типу. У ній містяться адреси віртуальних методів цього об'єктного типу. Незалежно від кількості змінних даного об'єктного типу, для нього створюється тільки одна таблиця VMT. При виклику віртуального методу небудь примірником місцезнаходження коду реалізації даного методу визначається за таблицею VMT для типу даного екземпляра. Взаємозв'язок між VMT і екземпляром класу встановлюється при ініціалізації об'єкта. Так як адреси віртуальних методів при їх виклик визначаються через VMT об'єкта, то гарантовано будуть використовуватися методи, що відповідають типу об'єкта.
В· У таблиці VMT містяться адреси всіх віртуальних методів класу - як успадкованих від предків, так і перевизначених в даному класі. Тому віртуальні методи викликаються досить швидко, але вимагають великого обсягу пам'яті. На відміну від віртуальних методів, динамічні методи викликаються повільніше, але зате займають менше пам'яті . Це поясню...