Ich möchte auch hinzufügen, dass es ziemlich irrelevant ist, ob diese inline sind oder nicht, es sei denn, Sie führen Millionen von Gets / Sets pro Frame durch. Es lohnt sich ehrlich gesagt nicht, den Schlaf zu verlieren.
Denken Sie auch daran, dass nur weil Sie das Wort "inline" vor Ihre Deklaration + Definition setzen, dies nicht bedeutet, dass der Compiler Ihren Code inline macht. Es werden verschiedene Heuristiken verwendet, um herauszufinden, ob dies sinnvoll ist. Dies ist häufig der klassische Kompromiss zwischen Geschwindigkeit und Größe. Es gibt jedoch das Brute-Force-Schlüsselwort '__forceinline' in VC ++ (ich bin mir nicht sicher, was es in GCC ist), das auf die ausgefallenen Heuristiken des Compilers stampft. Ich empfehle es wirklich überhaupt nicht und außerdem wird es wahrscheinlich falsch sein, wenn Sie einmal auf eine andere Architektur portiert haben.
Versuchen Sie, alle Funktionsdefinitionen in die Implementierungsdatei aufzunehmen und die reinen Deklarationen für die Header zu belassen (es sei denn, Sie sind natürlich eine Vorlagen-Metaprogrammierung (STL / BOOST / etc). In diesem Fall befindet sich so ziemlich alles in den Headern;))
Einer der klassischen Orte, an denen Leute gerne inline arbeiten (zumindest in Videospielen, von denen ich komme), sind mathematische Überschriften. Kreuz- / Punktprodukte, Vektorlängen, Matrixlöschung usw. werden häufig in der Kopfzeile platziert, was ich nur für unnötig halte. 9/10 macht es keinen Unterschied für die Leistung, und wenn Sie jemals eine enge Schleife durchführen müssen, z. B. ein großes Vektorarray durch eine Matrix transformieren, ist es wahrscheinlich besser, die Mathematik manuell inline durchzuführen oder sie sogar besser zu codieren plattformspezifischer Assembler.
Oh, und noch ein Punkt: Wenn Sie der Meinung sind, dass eine Klasse wirklich mehr Daten als Code enthalten muss, sollten Sie eine gute alte Struktur verwenden, die das OO-Gepäck der Abstraktion nicht mit sich bringt. Dafür ist sie da. :) :)
Tut mir leid, ich wollte nicht so viel weitermachen, aber ich denke, es hilft, reale Anwendungsfälle zu berücksichtigen und mich nicht zu sehr auf pedantische Compiler-Einstellungen einzulassen (vertrau mir, ich war dort;))
Viel Glück.
Shane