Покажчики на функції

Приклад 1. Таймер.
Нехай ми хочемо реалізувати таймер, який через задані проміжки часу виконує довільний код. Користувачі нашого таймера повинні мати можливість вказати який саме код повинен виконуватися таймером. ООП-підхід до вирішення даного завдання на C ++ може виглядати наступним чином: Користувачі нашого таймера можуть успадковуватися від TimerClient і передавати нашому таймером покажчики на спадкоємців. Наша реалізація таймера буде викликати OnTimer () і таким чином виконувати клієнтський код.
Альтернативою ООП є покажчики на функції. Ми могли б передати таймером покажчик на функцію, яку буде викликати наша реалізація.

Розглянемо ще кілька прикладів:
Приклад 2. Приклад 3.

Розглянемо наступний клас: Методи height і width мають однакову сигнатуру. Якщо у нас є екземпляр класу Array2D. то ми можемо використовувати покажчики на методи наступним чином:

Примітка: const входить в сигнатуру методу.

Зберігання покажчиків на методи в пам'яті.

Приклад 6. У цьому прикладі функція sort_persons приймає покажчик на константний метод класу Person. повертає string. Передаючи в неї покажчик на name ми сортуємо масив людей на ім'я, передаючи покажчик на surname ми сортуємо масив на прізвище.

Покажчики на члени даних

Крім покажчиків на методи в C ++ також є покажчики на дані. Синтаксис звернення до даних об'єкта за вказівником практично ідентичний виклику методу за вказівником. Головна відмінність - відсутність дужок.