Verwendungsmöglichkeiten von Inlinefunktionen
Inlinefunktionen werden am besten für kleine Funktionen verwendet, z. B. Zugriff auf private Datenmember. Ein- oder zweispurige "Accessor"-Funktionen geben in erster Linie Zustandsinformationen über Objekte ab. Kurze Funktionen werden von der Restkapazität des Funktionsaufrufs beeinflusst. Längere Funktionen benötigen proportional weniger Zeit in der Aufruf-/Rückgabesequenz und profitieren weniger vom Inlining.
Beispiel
Die Point-Klasse, die in Funktionsaufrufergebnisse eingeführt wird, kann wie nachfolgend veranschaulicht optimiert werden:
// when_to_use_inline_functions.cpp
class Point
{
public:
// Define "accessor" functions as
// reference types.
unsigned& x();
unsigned& y();
private:
unsigned _x;
unsigned _y;
};
inline unsigned& Point::x()
{
return _x;
}
inline unsigned& Point::y()
{
return _y;
}
int main()
{
}
Die Koordinatenmanipulation ist ein relativ allgemeiner Vorgang in einem Client dieser Klasse und durch die Angabe der beiden Accessorfunktionen (x und y im vorhergehenden Beispiel) als inline wird in der Regel der Mehraufwand gespart bei:
Funktionsaufrufen (einschließlich der Parameterübergabe und -ablage der Adresse des Objekts auf dem Stapel)
Beibehaltung des Stapelrahmens des Aufrufers
Neuem Stapelrahmensetup
Rückgabewertkommunikation
Wiederherstellung des alten Stapelrahmens
Return