Funktionelle Objekte. STL (Teil 11)




Funktors, c ++ Anfänger, funktionelle Einheit, STL-Bibliothek, stlIn früheren Diskussionen geflasht haben immer wieder den Begriff als Funktors, aber es gewinnt besondere Bedeutung in Bezug auf die Algorithmen. Jetzt ist es Zeit, mit diesem Konzept befassen. Functor - eine Abkürzung von functional Objekt, welche die Struktur, Damit können Sie die Klassenobjekt als Funktion der zu verwenden. In C ++ für die Definition der Funktor Klasse zu beschreiben genug, die neu definiert den Betrieb ().

die, als eine Funktion des Objekts wird gebildet, einfach, auf diesem einfachen Beispiel zu zeigen,:

Auch aus diesem einfachen Beispiel zeigt die folgende: Betrieb () in der Klasse außer Kraft gesetzt werden kann (genau zu bestimmen,, weil es keine Implementierung Standard) Zufallszahl, die Art der Parameter und Rückgabetyp (oder auch nicht Wert zurück). Zusammenfassend:

Funktors, c ++ Anfänger, funktionelle Einheit, STL-Bibliothek, stl

Выгода функтора состоит в том, dass und). es ist parametrierbar Objekt zu erstellen (vor dem Aufruf) mit dem Konstruktor mit Parametern und b). может создаваться временный объект исключительно на время выполнения функционального вызова. Dies wird durch das Beispiel des vereinfachten integral Rechner veranschaulicht:

Hier, in einer Reihe cout << berechnen( oper )( op1, op2 ) действия выполняются последовательно:

  • erstellt ein temporäres Objekt Klasse berechnen Konstruktor mit einem Parameter oper;

  • Methode für das Objekt ausgeführt () (Funktionsaufruf) mit zwei Parametern;

  • Betrieb, werden in den Funktionsaufruf ausgeführt, Es hängt von dem Parameter oper, mit denen das Objekt konstruiert;

  • Funktionsaufruf gibt das Ergebnis der Operation;

  • etabliert temporäre Objekt, unmittelbar danach zerstört (wenn er beschrieben worden ist destructor, es wäre an dieser Stelle genannt worden);

Und als Ergebnis bekommen wir:

Funktors, c ++ Anfänger, funktionelle Einheit, STL-Bibliothek, stl

Aber besonders weit verbreitet functors erworben алгоритмах STL, früher diskutiert, wenn sie in der Herausforderung als Parameter übergeben, anstelle der Funktion, Definition Aktion oder Prädikat Algorithmus.

Newsletter neue Lektionen über die Programmierung:

Funktionelle Objekte. STL (Teil 11)
4 (80%) 1 Abstimmung

Öl

Etwa Öl

praktische Erfahrungen über die Softwareentwicklung 40 Jahre. Lehrer Globale Logik internationales Softwareunternehmen. IBM Developer Works Permanent Autor von Publikationen. Wissenschaftliche Herausgeber der Computerliteratur-Verlag "Symbol-Plus", Sankt Petersburg.

3 Gedanken zu "Funktionelle Objekte. STL (Teil 11)

  1. А почему в первом примере символ : стоит перед словом public? Поясните, bitte)

    1. Это уже из другого раздела C++: Unterricht, Anwendungsbereich.
      В примере private относится к видимости базового класса: доступ к базовому классу существует только изнутри класса summator.
      Квалификатор public дальше уже определён внутри Klasse, и относится к функциям членам, объявленным после него: конструктору и оператору (). Он показывает что эти функции члены видимы и могут быть использованы в любом месте программы.

      В данном примере всё это не так важно, но это отдельная и важная часть языка C++.

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *