meine erste GUI...
-
Hm, ok so wie ich das verstanden habe ist es theoretisch möglich das Programm auch ohne header Dateien zu schreiben!?
z.B. Wenn man in die .ccp einfach das hier schreibt:class Blabla { public: Blabla() { cout << "Blabla"; } };
Und der Dekonstruktor ist Praktisch nur ein spezieller Listener
-
Destruktor!
Nein, nur Header geht, aber dann brauchste mindestens eine cpp.
Außerdem ist das dann unflexibel, weil alles neu kompiliert werden muss, wenn eine Klasse geändert wird.Edit: Destruktoren sind übrigens ein sehr sinnvolles und mächtiges Feature, auf jeden Fall besser als GC.
-
Nathan schrieb:
Nein, nur Header geht, aber dann brauchste mindestens eine cpp.
Ja, die main cpp, oder?
Nathan schrieb:
Edit: Destruktoren sind übrigens ein sehr sinnvolles und mächtiges Feature, auf jeden Fall besser als GC.
Mag sein nur so ganz verstanden was rein muss hab ich nicht? Hast du da ein Beispiel?
Und zu meiner Ursprungsfage:
Hat jemand eine Idee zu irgendeinem sinnvollen Programm das man in java gar nicht machen kann?Danke nochmal für eure Hilfe!
-
@JJK3
Ein Destruktor zerstört das Objekt. Es muss also alles rein was nötig ist, damit vom Objekt kontrollierte Resourcen wieder freigegeben werden.
Bzw. bei diversen Hilfsklassen: alles was nötig ist um die vom Konstruktor gemachten Änderungen wieder rückgängig zu machen.Ein Destruktor einer File-Klasse wird z.B. das File-Handle zumachen.
Ein Destruktor einer Array-Klasse wird das Array freigeben.
Ein Destruktor einer Tree-Node Klasse wird alle Child-Nodes freigeben (was wiederrum zum Aufruf des Destruktors der Child-Nodes führt).
Ein Destruktor einer UniqueLock Klasse wird das "unlock" machen, welches das Gegenstück zum "lock" ist das im Konstruktor erfolgt ist.
Ein Destruktor einer Transaktions-Klasse wird die Transaktion zurückrollen (sofern sie nicht davor schon committed wurde).
Uswusf.JJK3 schrieb:
Und der Dekonstruktor ist Praktisch nur ein spezieller Listener
Ein Destruktor ist kein Listener. Keine Ahnung wie du darauf kommst.
-
C/C++-Programme in Header und (wie heißt das andere?) aufzuteilen ist nur Konvention. Du kannst selbstverständlich alles in eine .cpp schreiben. Du kannst auch alles in eine .h schreiben. Du kannst auch alles in eine .jpg schreiben. Dem Compiler ist das wurscht. Der weiß sowieso nicht, dass es sowas wie Header-Dateien gibt, weil die üblicherweise vorher eingesetzt werden. Dass du eine .cpp brauchst oder gar eine main.cpp ist Quatsch.
Zur anderen Frage: In dem Link von Youka stand was drin.
Folgende Funktion ist in Java nicht möglich:void swap(int &i1, int &i2){ //tausche i1 und i2 int temp = i1; i1 = i2; i2 = temp; }
Kann man zwar in Java so ähnlich hinschreiben, tauscht aber die Werte nicht.
Weiterhin kannst du keinen Bootloader schreiben, aber das geht in C++ auch nicht, dafür braucht man 512 Byte Assembler. Aber wenn man die hat kann man leicht zu C wechseln. Zu Java definitiv nicht. Eine Adresse ist für den Videospeicher, damit man Text auf dem Bildschirm ausgeben kann. In Java kann man "Schreibe mal "Hallo" an Adresse 0x800" nicht ausdrücken.
Oder wie wärs mit "Gebe die Bit-Repräsentation von double 3.14 aus". Vielleicht findest du ja in Java eine double to bit-Array-Funktion, ansonsten ists Pech. Selber schreiben geht nicht.
Außerdem kannst du nichts programmieren, wofür es keine JVM gibt, was für viele Mikrocontroller zutrifft. Selbiges trifft natürlich für C++ zu, wo es einen Compiler für die Plattform geben muss, allerdings ist ein C-Compiler sehr viel einfacher zu bauen als eine JVM.
Vielleicht solltest du dir mal https://de.wikipedia.org/wiki/Turingmächtig ansehen, was effektiv sagt, dass C++ und Java dieselben Funktionen berechnen können, allerdings ist die Definition für Funktion sehr weit gefasst.
Anders ausgedrückt: Du könntest in Java einen C++-Interpreter schreiben. Dann kannst du auch die oben genannte Swap-Funktion bauen. Sie ist zwar in C++ geschrieben, läuft aber in Java.Mir fällt aber noch etwas ein, was in Java nicht geht:
Alloziere Speicher und sieh nach was da so drin steht. Ich habe es schon erlebt, dass jemand Firefox zugemacht hat, per malloc Speicher angefordert hat, diesen als Text ausgegeben hat und dann dort seine Passwörter gesehen hat.
Java macht dir das kaputt, weil es einfach die schönen Passwörter mit Nullen überschreibt.
-
nwp3 schrieb:
Weiterhin kannst du keinen Bootloader schreiben, aber das geht in C++ auch nicht, dafür braucht man 512 Byte Assembler. Aber wenn man die hat kann man leicht zu C wechseln. Zu Java definitiv nicht. Eine Adresse ist für den Videospeicher, damit man Text auf dem Bildschirm ausgeben kann. In Java kann man "Schreibe mal "Hallo" an Adresse 0x800" nicht ausdrücken.
Und nach ein paar bzw. paar hundert weiteren Zeilen C kannst du dann zu Java wechseln. Indem du alle für Hardware-Zugriffe nötigen Funktionen in C implementierst irgendwie in die JVM reinschummelst.
JVM Implementierungen gibt es auch einige, die sollten auch relativ gut protierbar sein wenn man Anfangs mal auf Dinge wie JIT verzichtet.Ich will jetzt nicht sagen dass ich es für eine gute Idee halte, aber grundsätzlich sehe ich jetzt kein absolutes KO Kriterium dafür ein OS zu 95% in Java zu schreiben.
-
hustbaer schrieb:
JJK3 schrieb:
Und der Dekonstruktor ist Praktisch nur ein spezieller Listener
Ein Destruktor ist kein Listener. Keine Ahnung wie du darauf kommst.
Naja es wird wie bei einem Listener eine Funktion bei einem bestimmten Ereignis aufgerufen...
Ich weiß das dass jetzt eigentlich schon nix mehr mit meiner ursprungsfrage zu tun hat, aber das ist ja eigentlich auch egal...
Wie alloziert man den Speicher und gibt ihn aus?
Edit:
Mir fällt gerade auf es mir das wenig bringen würde wenn ihr mir jetzt die Antwort geben würdet
Wo lernt man den Praxisorientiert wie man das Betriebssystem ohne viele Umwege Dinge fragt(z.B. einen USB-Port fragen was da los ist, ob und welche Daten transferiert werden... usw.)
-
????????
????????
????????
????????
????????
????????
????????
-
???
-
Wenn du jetzt spammst und quengelst wie ein kleines Kind wird keiner Lust haben dir zu helfen.
Ich auch nicht, deswegen gebe ich dir nur diesen Tipp.
-
Uääääähhhhh!
Ne, mal ernsthaft, weiß es jemand?
Wenn ich einfach still bin und warte sieht das hier niemand mehr und die Frage ob mir jemand helfen will oder nicht, hat sich komplett erledigt!P.S. wenn du mir helfen kannst, dann tue das doch bitte