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.


Anmelden zum Antworten