Frage zu Funktion
-
Hallo was ist das hier für eine Funktion ?
( func () );
Was kann man damit machen sowas hab ich vorher noch nie gesehen.
-
Das ist ein Funktionsaufruf. Keine Funktion. Und die Klammern drum herum haben gar nichts zu bedeuten.
-
Also ist das sowas ?
func();
Hier bekommt func(); automatisch den Datentyp void oder ?
Ich meine ich hätte mal irgendwie sowas gelesen ...
#include <iostream> using namespace std; func(); int main() { func(); system("PAUSE"); } func() { cout<<"ok"; }
-
var_ schrieb:
Hier bekommt func(); automatisch den Datentyp void oder ?
Nein, func "bekommt" dadurch gar nichts. func wird hier nur verwendet. Du kannst daraus allenfalls ablesen, dass func keine Parameter (oder nur Parameter mit Defaultwerten) hat. Auf den Rückgabetyp kannst du daraus nicht schließen, es könnte auch sein, dass func einen hat, der aber hier ignoriert wird.
-
Und das "func()" was da alleine oben bei deinem Beispiel steht ist eine Forward Declaration. Ansonsten wüsste deine main-Methode nicht das es diese Funktion gibt, da der Compiler noch nicht so weit in der Datei ist. Benutzt man Header, benötigt man dies (meist) nicht.
-
var_ schrieb:
Hier bekommt func(); automatisch den Datentyp void oder ?
Das was du hier zeigst, geht mit einem ordentlichen C++ Compiler nicht. Eine Typangabe ist verpflichtend (Und wenn ein Compiler es fälschlicherweise zulässt, wird int und nicht void als Typ angenommen). Das beantwortet aber deine Frage dennoch nicht.
Die Angabe "( func() )" lässt keinen Rückschluss auf den Rückgabetyp zu, und Theoretisch muss es auch noch nicht einmal ein Funktionsaufruf sein ("int()" ist z.B. auch gültiges C++) - auch wenn es naheliegend ist.
Nehmen wir an das es ein Funktionsaufruf ist. Einen Rückgabewert kann man ignorieren, daher ist nur bekannt das eine Funktion "func" aufgerufen wird, die entweder keine Parameter, oder nur Parameter mit Standardwerten akzeptiert. Die Äußeren Klammern kann man wie in der Mathematik in der Regel ignorieren.