static im funktionskopf



  • hallo!
    was bewirkt denn ein "static" vor dem rückgabetyp einer funktion? heißt das nun nur, das der rückgabewert statisch ist?
    falls ja, warum kann ich eine memberfunktion einer klasse, die "static" dranstehen hat, aufrufen ohne das es ein objekt der klasse gibt?

    gruß



  • Nicht der Rückgabewert ist statisch, sondern die Funktion selber. Deshalb kannst du eine statische Funktion aufrufen, ohne eine konkrete Instanz des Objekts zu haben.

    class Foo {
      //Statische Funktion
      static void bar() { //... }
    };
    
    //Aufruf:
    Foo::bar();
    


  • chris' schrieb:

    hallo!
    was bewirkt denn ein "static" vor dem rückgabetyp einer funktion? heißt das nun nur, das der rückgabewert statisch ist?

    Ne. In diesem Fall besagt das static, dass die Funktion interne linkage hat. (d.h., dass sie nur in der ÜE aufrufbar ist, in der sie auch definiert wurde).

    falls ja, warum kann ich eine memberfunktion einer klasse, die "static" dranstehen hat, aufrufen ohne das es ein objekt der klasse gibt?

    gruß

    Das static bei einer Memberfunktion bedeutet, dass diese Funktion unabhängig von einem Objekt existiert. D.h. dass du sie ohne ein Objekt aufrufen kannst. Allerdings weiß ich jetzt auch nicht, ob das Linkage von static Member-Funktionen äquivalent zu normalen static Funktionen ist.

    /edit: static Member-Funktionen haben externes Linkage.

    Gruß Caipi



  • chris' schrieb:

    hallo!
    was bewirkt denn ein "static" vor dem rückgabetyp einer funktion? heißt das nun nur, das der rückgabewert statisch ist?
    falls ja, warum kann ich eine memberfunktion einer klasse, die "static" dranstehen hat, aufrufen ohne das es ein objekt der klasse gibt?

    gruß

    dieses static macht nix am typen, sondern manct die ganze funktion static.

    isses ne globale funktion heißt das, daß ne andere *.cpp sie nicht aufrufen kann. (linker verweigert es).

    isses ne methode, wird sie zu ner methode, die ohne objekt (ohne this) geht.



  • super, danke euch 😉

    achja: methode=memberfunktion ja?
    und was ist eine "ÜE"?



  • Hallo

    achja: methode=memberfunktion ja?

    ja

    und was ist eine "ÜE"?

    Übersetungseinheit. i.a. eine einzelne Quellcode-Datei mitsamt ihren ganzen Inludes.

    bis bald
    akari


Anmelden zum Antworten