2017-12-27 1 views
-1

ich an dieser Dokumentation Suche von http://www.boost.org/doc/libs/1_54_0/doc/html/boost/program_options/variables_map.htmlWas wird zurückgegeben und was wird in der in dieser Dokumentation beschriebenen Funktion ausgeführt?

const variable_value & operator[](const std::string & name) const; 

bei dieser Suche die Logik einer C++ Projekt zu bewerten. Sie können ein Array nicht aus einer Funktion in C++ zurückgeben, daher bin ich verwirrt darüber, was die eckigen Klammern vor der Parameterliste sind. Ich bin auch verwirrt darüber, warum es eine Const nach der Trailing-Liste gibt.

+0

Dieser 'Operator' gibt eine' const'-Referenz zurück, kein Array. Bitte suchen Sie nach ** operator overloading ** – Fureeish

+1

Dies ist ein einfacher [überladener Subscript-Operator] (http://en.cppreference.com/w/cpp/language/operator_member_access). – Holt

+0

Das nachgestellte 'const' bedeutet, dass diese Methode nichts darin ändert. –

Antwort

1

Das abschließende const bedeutet, dass der Parameter "this" in der Funktion ebenfalls const ist. Dies hat zur Folge, dass in dieser Funktion kein Klassenzustand mutiert werden kann und dass die Funktion keine anderen nichtkonstanten Elementfunktionen aufrufen kann.

Die Funktionssignatur selbst überlastet den Operator []. Der Rückgabetyp für die Funktion lautet "const variable_value &". Wenn Sie den Operator [] überladen, können Sie Ihre Klasse nach beliebigen Indizien indizieren. Normalerweise wird [] von Arrays verwendet, um auf Elemente zuzugreifen (arr [1] == zweites Element des Arrays). Mit dieser Überladung kann die Klasse mit einem String-Parameter indiziert werden (thatClass ["SomeString"]).

Verwandte Themen