In C++ kann die Effizienz eines Makros mit dem vorhersagbaren Verhalten und der Typsicherheit einer normalen Funktion kombiniert werden.
Dies geschieht durch inline Funktionen
inline.cpp
inline int max(int a, int b) {
return a > b ? a : b;
}
Bei einer normalen Funktion wird der Funktionscode während des Compilierens nur einmal erstellt und immer wieder referenziert.
Wird die Funktion aufgerufen finden also immer Sprünge zu dieser Referenz statt. Das spart Speicher. Weniger Speicherverbrauch führt meistens zu einer besseren Performance.
Im Inline-Beispiel wird aber nur simpler Vergleich durchgeführt. Lohnt es sich hier Speicher zu sparen und dafür häufige Sprünge in Kauf zu nehmen? Eher nicht. Daher fügt der Compiler bei Funktionen mit dem Schlüsselwort inline die Funktion direkt im Assembler Code ein.
Warum also nicht direkt den Methodenkörper in den C++ Code schreiben?
Weil man Funktionen besser verwalten kann und man durch das Schlüsselwort inline keine Nachteile mehr hat.