Funktionen außerhalb von Klassen, Vergleich zu Java
-
Hallo,
ich beschäftige mich erst seit ein paar Tagen mit C++, habe aber vorher schon einiges mit Java und C programmiert. Was mir bei C++ aufgefallen ist, ist folgendes:
In Java sind alle Funktionen (Methoden!) innerhalb von Klassen untergebracht. In vielen C++ Beispielen, die ich bisher gesehen habe, wurden Funktionen NICHT innerhalb von Klassen deklariert, sondern wie man es aus C kennt. Sind das dann quasi meine "statischen Methoden" aus Java? Sind in Klassen deklarierte Funktionen,ergo Methoden, analog zu den mir aus Java bekannten Methoden, sprich public, protected usw., werden nur vererbt wenn als public deklariert etc.?!
Vielen Dank im Voraus!
-
chmbw schrieb:
Hallo,
Sind das dann quasi meine "statischen Methoden" aus Java?Quasi so ähnlich, aber eigentlich gibt es sowas in Java nicht.
Sind in Klassen deklarierte Funktionen,ergo Methoden, analog zu den mir aus Java bekannten Methoden, sprich public, protected usw.,
Ja, die Keywords gibt es auch in C++
werden nur vererbt wenn als public deklariert etc.?!
Das ist auch in Java nicht so. Bzw. was ist etc.?
-
erstmal danke für deine Antwort.
Bitte geben Sie einen Ben schrieb:
chmbw schrieb:
Hallo,
Sind das dann quasi meine "statischen Methoden" aus Java?Quasi so ähnlich, aber eigentlich gibt es sowas in Java nicht.
Natürlich gibt es statische Methoden in Java. Sie können unabhängig von der Existenz eines Objekts aufgerufen werden, sind nur der Klasse zugehörig...
Bitte geben Sie einen Ben schrieb:
werden nur vererbt wenn als public deklariert etc.?!
Das ist auch in Java nicht so. Bzw. was ist etc.?
In Java kann ich fröhlich die Vererbung durch das Schlüsselwort "private" unterbinden...das etc. bezog sich auf protected.
-
chmbw schrieb:
erstmal danke für deine Antwort.
Bitte geben Sie einen Ben schrieb:
chmbw schrieb:
Hallo,
Sind das dann quasi meine "statischen Methoden" aus Java?Quasi so ähnlich, aber eigentlich gibt es sowas in Java nicht.
Natürlich gibt es statische Methoden in Java. Sie können unabhängig von der Existenz eines Objekts aufgerufen werden, sind nur der Klasse zugehörig...
Er meinte, dass es in Java keine Entsprechung zu freien Funktionen in C++ gibt. Als Workaround macht man deshalb Klassen mit statischen Methoden. Statische Methoden gibt es in C++ allerdings ebenfalls.
chmbw schrieb:
Bitte geben Sie einen Ben schrieb:
werden nur vererbt wenn als public deklariert etc.?!
Das ist auch in Java nicht so. Bzw. was ist etc.?
In Java kann ich fröhlich die Vererbung durch das Schlüsselwort "private" unterbinden...das etc. bezog sich auf protected.
Weder in Java noch in C++ kann man die Vererbung mit private unterbinden (okay, man kann den Ctor private machen). private verhindert lediglich, dass die beerbte Klasse auf die entsprechenden Elemente zugreifen darf. Vererbt werden diese allerdings nichtsdestotrotz. In Java kann man Vererbung mit final verhindern. In C++ geht das bestenfalls über das sogenannte "Named-Constructor"-Idion, was allerdings nur ein Workaround ist.
-
Hallo,
er meinte es gibt in Java nichts vergleichbares zu den freien Funktionen in C++.
In Javamissbrauchtnutzt man aber die statischen Methoden dazu.
Statische Funktionen kennt C++ auch.Sind in Klassen deklarierte Funktionen,ergo Methoden, analog zu den mir aus Java bekannten Methoden, sprich public, protected usw.,
Ähnlich und bzgl. private, public und protected gleich. Der erste einzige Unterscheid der mir einfällt ist,
dass C++-Methoden nicht automatisch virtuell sind.
-
Jockelx schrieb:
Ähnlich und bzgl. private, public und protected gleich. Der erste einzige Unterscheid der mir einfällt ist,
dass C++-Methoden nicht automatisch virtuell sind.Default in C++ ist private, Default in Java package-weite Sichtbarkeit.
-
chmbw schrieb:
Sind das dann quasi meine "statischen Methoden" aus Java?
Andersrum, statische Methoden in Java sind quasi ein Ersatz für freie Funktionen. Letztere haben aber abgesehen von einfacherer Syntax noch weitere Vorteile, z.B. dass man sie in verschiedenen Modulen überladen kann.
-
herzlichen dank für die zahlreichen Antworten
Und wieder was dazu gelernt!