Pointeri la funcții

Exemplul 1. Timer.
Să presupunem că vrem să pună în aplicare un cronometru care, la intervale de timp specificate pentru a executa cod arbitrar. Membrii timer nostru ar trebui să fie în măsură să precizeze ce tip de cod trebuie să fie executat cronometrul. Abordarea OOP la rezolvarea acestei probleme în C ++ este după cum urmează: Membrii timer noastre pot fi moștenite de la TimerClient și de a transmite indicii noastre timer moștenitorilor. punerea în aplicare a noastră timer-ul va determina OnTimer () și, astfel, să execute cod client-side.
O alternativă la OEP sunt indicii de funcții. Am putea trece un pointer la o funcție de temporizare, care va apela implementarea noastră.

Luați în considerare câteva exemple:
Exemplul 2. Exemplul 3.

Luați în considerare următoarele clase: înălțime și lățime metode au aceeași semnătură. Dacă avem o instanță a unui Array2D de clasă. atunci putem folosi pointeri la metodele după cum urmează:

Notă: Const este parte a semnăturii metodei.

Stocarea indicii la metode în memorie.

Exemplul 6. In acest exemplu funcția sort_persons ia un pointer la o metodă constantă de clasa Person. returnează un șir de caractere. Trecerea la un pointer la numele, sortăm șirul de oameni după nume, care trece un pointer la numele de familie, sortăm matrice după nume.

Trimiteri către membrii de date

În plus față de indicii la metode în C ++ are, de asemenea, indicatori de date. Sintaxa de acces la date obiect indicatorul este aproape identic cu un apel la metoda de index. Principala diferență - absența între paranteze.

articole similare