inline-Funktionen
-
Hallo zusammen,
mir ist zwar klar, weshalb inline-Funktionen Vorteile bringen können, aber wo sie genau implementiert werden müssen irgendwie nicht so ganz (und warum das so ist), so hab ich folgendes Beispiel vorliegen://für rechtsseitige Multiplikation mit einem Skalar
inline Vektor operator * (const Vektor& vec, double skal);class Vektor
{
.... //viele andere Sachen
friend CVektor3D operator*(const Vektor& vec, double skal);
.... //viele andere Sachen
};inline CVektor3D operator*(const Vektor& vec, double skal)
{
return CVektor3D(skal * vec[0],
skal * vec[1],
skal * vec[2]);
}Nun zurück zu meinem Problem: Muss sich nun das Ganze im Header abspielen oder könnte man die Definition und Deklaration nicht irgendwie auf Header und cpp-File verteilen ?
Gruss CatDog
-
Bei inline-Funktionen ersetzt der Compiler den Funktionsaufruf direkt durch den Funktionsrumpf (natürlich nur im Rahmen seiner Möglichkeiten) - aber dazu muß er den Rumpf auch an der Stelle kennen, wo die Funktion aufgerufen werden soll. Also: Ja, inline-Funktionen müssen im Header definiert werden.
(klar gibt es Ausnahmen, aber das betrifft eher Hilfsfunktionen, die nur innerhalb der Klasse genutzt werden sollen)
-
CStoll schrieb:
Ja, inline-Funktionen müssen im Header definiert werden.
auch bei ltcg?
-
qwertyu schrieb:
CStoll schrieb:
Ja, inline-Funktionen müssen im Header definiert werden.
auch bei ltcg?
Bei was? (ich kenne zwar einige typische Abkürzungen, aber die ist mir noch nie untergekommen)
-
Link time code generation. War wohl eh mehr eine rhetorische Frage.

-
ltcg ist dann aber ganz sicher nicht auf das inline-Schlüsselwort angewiesen.