Kann man in diesem Fall eine Funktion von einer Variablen unterschieden?



  • Bin gerade über diese Zeile gestoßen:

    string start();
    

    Kann ich hier überhaupt sagen, ob es sich um eine Funktion oder eine Instanzierung von string mit dem Standardkonstruktor handelt? Wenn ja, wie und wodurch?



  • Hallo,

    es ist eindeutig eine Funktion, da der Standard-Konstruktor-Aufruf ohne
    Klammern erfolgen muss.

    Funktion:

    std::string start();
    

    Instanziierung:

    std::string start;
    

    Gruß,
    CSpille



  • CSpille schrieb:

    es ist eindeutig eine Funktion, da der Standard-Konstruktor-Aufruf ohne
    Klammern erfolgen muss.

    Stimmt, aber die Begründung nicht:

    std::string start = std::string();
    // oder auch
    std::string * pStr = new std::string();
    

    Die Begründung ist schlicht und ergreifend eine mehrdeutige Grammatik. Die Eindeutigkeit wird wieder hergestellt, indem man willkürlich festlegt, dass alles, was sich als Funktionsdeklaration parsen läßt, auch als Funktionsdeklaration angesehen wird.



  • Hi Bashar,

    Hast du das nicht vorhandene "in diesem Fall" nicht gesehen ^^

    Hast du absolut Recht.

    Gruß,
    CSpille


Anmelden zum Antworten