inline-Funktion als getter



  • Bisher hab ich es so gemacht, dass ich die entsprechenden get-Methoden zur Weitergabe privater Membervariablen als inline deklariert habe

    z.B.:

    class myClass
    {
    public:
        inline bool hasContent() const { return _hasContent; }
    
    private:
        bool _hasContent;
    };
    

    jetzt ist es aber so, dass inline-Funktionen direkt im Code eingefügt werden, also kein Funktionsaufruf stattfindet.
    aus bool b = myClass.hasContent(); würde also bool b = _hasContent; werden, oder ignoriert der Compiler in dem Fall das inline, da von außerhalb ja nicht auf die Variable zugegriffen werden kann?



  • das hängt von der optimierungsstufe des compilers ab



  • inline heisst nicht, dass es geinlined wird.

    inline schreibt man nur, wenn man eine definition in einen header packen will.



  • In diesem Fall ist es überflüssig, da die Funktion ja direkt in der Klassendefinition definiert wurde, also zwangsläufig im Header. 'inline' macht nur für außerhalb definierte Funktionen Sinn.



  • danke



  • Im übrigen ist der "Zugriff" auf Variabeln ja auch der Sinn von einer gett Methode. Auch wenn der Compiler das optimieren würde, würde es für dich doch keine Rolle spielen. 🙄
    Dazu kommt noch, dass auch, wenn du es inline deklarierst, es nicht zwingend inline ist schlussendlich. Hier hat der Compiler das letzte Wort.



  • drakon schrieb:

    Im übrigen ist der "Zugriff" auf Variabeln ja auch der Sinn von einer gett Methode.

    deswegen verwende ich sie auch

    drakon schrieb:

    Auch wenn der Compiler das optimieren würde, würde es für dich doch keine Rolle spielen. 🙄

    doch spielt es, sonst hätte ich nicht gefragt.

    drakon schrieb:

    Dazu kommt noch, dass auch, wenn du es inline deklarierst, es nicht zwingend inline ist schlussendlich. Hier hat der Compiler das letzte Wort.

    stell dir vor, auch das weiß ich.

    Dass einige meinen, auf eine geklärte Frage noch ihren Senf ablassen zu müssen -.-



  • zwutz schrieb:

    drakon schrieb:

    Auch wenn der Compiler das optimieren würde, würde es für dich doch keine Rolle spielen. 🙄

    doch spielt es, sonst hätte ich nicht gefragt.

    In wiefern spielt das für dich eine Rolle? Das Ergebnis ist ja das gleiche, ob er es jetzt inline mach, oder nicht..

    zwutz schrieb:

    drakon schrieb:

    Dazu kommt noch, dass auch, wenn du es inline deklarierst, es nicht zwingend inline ist schlussendlich. Hier hat der Compiler das letzte Wort.

    stell dir vor, auch das weiß ich.

    Dass einige meinen, auf eine geklärte Frage noch ihren Senf ablassen zu müssen -.-

    zwutz schrieb:

    jetzt ist es aber so, dass inline-Funktionen direkt im Code eingefügt werden, also kein Funktionsaufruf stattfindet.

    Dann solltest du dich aber besser ausdrücken. Im übrigen kenn ich dich nicht, weiss daher nicht, ob du das weisst. 😉
    btw: ich lasse öfters meinen Senf weg, als du denkst..;)



  • Ich mag Senf.



  • drakon schrieb:

    In wiefern spielt das für dich eine Rolle? Das Ergebnis ist ja das gleiche, ob er es jetzt inline mach, oder nicht..

    dass das Ergebnis das gleiche ist, hab ich selbst bemerkt (es funktioniert beides so, wie es soll).
    Ich wollte lediglich wissen, ob der Compiler das inline hier überhaupt berücksichtigen kann oder ob er bei sowas generell das inline ignoriert. Die Frage wurde mir zufriedenstellend beantwortet

    zwutz schrieb:

    Dann solltest du dich aber besser ausdrücken. Im übrigen kenn ich dich nicht, weiss daher nicht, ob du das weisst. 😉

    mit meinem "danke" war alles für mich geklärt.
    Und du musst nicht wissen, was ich weiß. Wenn ich was wissen will, frag ich. Wenn ich nicht frage, weiß ich es, oder es interessiert mich nicht

    zwutz schrieb:

    btw: ich lasse öfters meinen Senf weg, als du denkst..;)

    Wenn man zu allem seinen Senf dazugibt, kann einem schnell der Appetit vergehen 😉


Anmelden zum Antworten