ohne inline
werden Sie wahrscheinlich mehrere exportierte Symbole erhalten, wenn die Funktion im Namespace oder im globalen Bereich deklariert ist (führt zu Linker-Fehlern).
Für eine Klasse (wie in Ihrem Beispiel) deklarieren die meisten Compiler die Methode jedoch implizit als Inline-Methode ( -fno-default-inline
wird diese Vorgabe im GCC deaktivieren).
Wenn Sie eine Funktion als Inline deklarieren, kann es sein, dass der Compiler erwartet, ihre Definition in der Übersetzung zu sehen. Daher sollten Sie sie für die Zeiten reservieren, in denen die Definition sichtbar ist.
auf einer höheren Ebene: eine Definition in der Klassendeklaration ist häufig für mehrere Übersetzungen sichtbar. Dies kann zu einer besseren Optimierung und zu einer längeren Kompilierzeit führen.
es sei denn, manuelle Optimierung und schnelle Kompilierung sind wichtig, dann ist es heutzutage unüblich, das Schlüsselwort in einer Klassendeklaration zu verwenden.