Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

11

04.07.2017, 16:49

Mein Buch sollte man für sauberes C++ auch nicht heranziehen!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

04.07.2017, 16:55

:D
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

13

04.07.2017, 16:57

Für den Embedded-Bereich ist es vielleicht noch OK, wenn man nur wenig von dem benutzt, was C++ bietet. Da ist eher C vorherrschend, denke ich.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

14

04.07.2017, 17:29

Also wir schreiben C++11 auf vergleichweise schwacher embedded Truck-Hardware (jeder Raspi ist dagegen eine Hochleistungsmaschine).
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

15

04.07.2017, 17:46

Aber ist es nicht so, dass z. B. die Verwendung von std::vector & Co. zu ziemlich großem Objektcode führt, der schnell mal die 64 KB Flash-Speicher sprengt, auf die viele Mikrocontroller begrenzt sind? Meistens hat man da noch nicht einmal dynamische Speicher-Allokierung bzw. muss die selbst implementieren, und das dann bei dann ein paar Kilobytes RAM.

TigerClaw25

unregistriert

16

04.07.2017, 18:22

Es kommt auf die Anwendung an. In meinem Bereich fällt zwar ein Teil der Steuergeräteprogrammierung, aber auch ein Teil der Software (Multimedia, LTE, etc. ...)

Die Stelle erfordert auch C++/Java Kenntnisse, daher gehe ich davon aus, dass ein Großteil eben Objektorientiert abläuft.

Sicherlich ist das Buch vom Stil her nicht optimal. Andererseits ist beim Erlernen der ersten Grundlagen sowieso nicht gleich ersichtlich, was guter/schlechter Stil bedeutet. Für mich ist es wichtig, dass ich die ersten Grundlagen mitbringe und weiß, was Strukturen oder Klassen sind oder wie Zeiger funktionieren und auch Antworten auf Themen habe, die ich eventuell noch nicht verinnerlicht habe. Alles andere lernt man sowieso praxisnah. Obwohl das teilweise nur geht, wenn man sich austauscht. Wenn ich mich zu Hause einschliesse und einfach drauf los schreibe, werde ich niemals erfahren, ob mein Code optimiert werden könnte.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

17

04.07.2017, 19:45

Aber ist es nicht so, dass z. B. die Verwendung von std::vector & Co. zu ziemlich großem Objektcode führt, der schnell mal die 64 KB Flash-Speicher sprengt, auf die viele Mikrocontroller begrenzt sind?
Ich sagte nicht, dass wir auf 64k beschränkt sind ;) Etwas besser als ein Arduino sind die Dinger dann schon :D Aber klar, die STL braucht viel Platz.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TigerClaw25

unregistriert

18

05.07.2017, 15:05

Ohne ein neues Thema zu eröffnen hätte ich noch eine kurze Frage zu Klassen.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
CRaumschiff Klassen()
{   CRaumschiff Spieler1;
return Spieler1;
}

int main(){
    Klassen();

    system("Pause");
    return 0;
}


Durch die Instanz Spieler1 wird der Konstruktor aufgerufen. Da die Instanz nach Verlassen der Funktion Klassen() ihre Gültigkeit verliert, wir der Destruktor aufgerufen. das "return Spieler1" bewirkt jedoch, dass der Destruktor 2x aufgerufen wird. Warum ist das so?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

19

05.07.2017, 15:10

Beim nächsten mal mach bitte ein neues Thema ;)
Spieler1 wird innerhalb der Methode "Klassen" erstellt. In Zeile 3 wird die Instanz zurück gegeben. C++ kopiert an dieser Stelle das Objekt, wobei der Kopierkonstruktor der Klasse Spieler1 aufgerufen wird. Beim Ende der Methode wird die eigentliche Instanz von Spieler1 gelöscht, so wie es auch mit jeder anderen Variable/Instanz innerhalb eines Code-Blocks passiert. Am Ende der Main-Methode wird dann deine Kopie gelöscht. Bei der Kopie handelt es sich übrigens um ein eigenständiges Objekt. Das heißt es sind tatsächlich zwei verschiedene Instanzen. Das ist vermutlich nicht das was du vor hattest. Du kannst mal den Kopierkonstruktor von Spieler1 löschen und gucken was passiert wenn du kompilieren möchtest.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

TigerClaw25

unregistriert

20

05.07.2017, 15:35

Warum wird der Konstruktor an sich nur 1x aufgerufen, obwohl im Prinzip zwei Instanzen verfügbar sind?

Was mich außerdem verwirrt ist der ":" Operator. Einerseits kann ich den Membervariablen Werte zuweisen

C-/C++-Quelltext

1
2
3
4
5
CRaumschiff::CRaumschiff(){
    cout << "Konstruktor ohne Parameterliste initialisiert." << endl;
    mEnergie = 100;
    mPunkte = 50;
}

aber auch folgende Schreibweise für eine Initialisierung verwenden:

C-/C++-Quelltext

1
CRaumschiff::CRaumschiff() : mEnergie(100), mPunkte(50) {}


Kann ich annehmen, dass der ":"-Operator vor der Variable mEnergie absolut nichts mit der Funktion des Operators ":" bei der Vererbung zutun hat?

Werbeanzeige