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
Zitat von »"Nexus"«
Zitat von »"Sicaine"«
Wenn ich mir Sprachen wie Java oder C# ansehe, seh ich neben allgemeinen Vorteilen im Umfang der _Sprachen_(stndardlibs die Bilder manipulieren koennen etc.) wie auch diese Sicherheitsvorteile.
Wenn du damit leben kannst, dass die beiden Sprachen, die du genannt hast, einige Features von C++ nicht so anbieten, ist das deine Sache. Die Programmierung mit Zeigern oder Templates ist eben nicht für alle etwas, aber sie bietet einem auch gewisse Möglichkeiten. Und wenn man sich für C++ entscheidet, sollte man die Sprache eben auch lernen, dann muss man sich auch nicht über Anfängerfehler aufregen.
Und was den Umfang der Sprachen betrifft: Was bringt es, wenn die Standardlib durch irgendwelche Dinge wie Bildmanipulationsroutinen aufgebläht wird? So etwas ist in meinen Augen keine "Standardbibliothek" mehr, für das gibts externe Libs. Und zum Thema Sicherheit kann man sagen, dass die STL und Dinge wie std::string genügend Möglichkeiten geben, relativ einfach und bequem zu programmieren. Aber wenn man sich lieber mit char* rumschlägt, muss man sich eben nicht über Fehler wundern...
Zitat von »"Sicaine"«
@nexus du scheinst wohl nicht verstanden zu haben auf was der Author hinauswill. Sicher nicht auf char* sondern allgemein auf das Problem mit pointern.
Zitat von »"Sicaine"«
Templates hat Java quasi mit generics. Zeiger naja in Java sind eh alle objects autopointer.
Zitat von »"Sicaine"«
Und Anfaengerfehler sind fuer mich keine Dinge die man zwar versteht aber an die man staendig denken und aufpassen muss wie auch zu schreiben sind. Die ganze Pointer Null Ueberpruefung muss normalerweise in guten Code vorhanden sein.
Zitat von »"Sicaine"«
Zumal mir Java und C# nur in den wenigsten Faellen Features nicht anbieten die C++ hat.
Zitat von »"xardias"«
Wenn du C++ für alle deine Programme nutzen willst.. es hindert dich niemand daran. Aber wenn man statt der Nachteile an anderen Sprachen einfach mal deren Vorteile erkennt merkt man, dass man damit wunderbar, sicher und sehr schnell Probleme Lösen kann, die in C++ wesentlich umständlicher und fehleranfälliger sind.
[...]
Wenn man nur noch mit den C++ Features arbeiten kann sollte man sich Gedanken um seinen geistigen Horizont machen und nicht andere Sprachen verteufeln.
Zitat von »"xardias"«
Man sollte Sprachen nicht vergleichen, daher ist es auch schwachsinnig davon zu Sprechen, dass Sprache X ein Feature hat welches Sprache Y nicht hat. Jede Sprache hat ihre eigenen Methoden Probleme zu lösen, und darauf sollte man sich konzentrieren.
Zitat von »"Nexus"«
Zum Punkt "Vergleich von Programmiersprachen": Ist das einfach eine moralische Grundhaltung, die Vergleiche generell als schlecht darstellt, oder wie hab ich das zu verstehen? "Man sollte ..., daher ..." scheint mir nicht gerade ein gutes Argument. Wenn man Sprachen nicht vergleichen darf, kann man sich wohl auch nicht für eine entscheiden bzw. kennt deren unterschiedliche Anwendungsgebiete nicht. In diesem Punkt widersprichst du dir selber.
Zitat von »"knivil"«
Wer das Konzept von Pointern nicht versteht und welche Konsequenzen das hat, ist fuer den Beruf Programmierer ungeeignet.
Zitat von »"knivil"«
Zum Thema Bibliotheken: Es gibt fuer alle erdenklichen Probleme vorgefertigte Bibliotheken. Gut, sie sind nicht gleich beim Compiler mit dabei, da muss man dann eben selbst im Netz suchen.
Zitat von »"knivil"«
Desweiteren finde ich es sehr bequem in C++ zu programmieren, ich tue es gern.
Zitat
Das finde ich etwas zu generalisierend. So einer ist möglicherweise als C++-Programmierer ungeeignet, in anderen Sprachen kommt man jedoch auch ohne Zeiger aus und kann trotzdem gut programmieren.
Zitat
One solution is to do a lot more stuff with things like STL string objects and generally try to hide the heap allocation. The auto_ptr<> and similar classes help here, too. But they only help. The fundamental problem still remains -- it is too easy to write subtly wrong code and the language is littered with booby-traps.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
class NamedPoint { private: float x, y; char* m_pName; public: NamedPoint( float x_, float y_, const char* name ) : x( x_ ), y( y_ ), m_pName( NULL ) { Construct( name ); } ~NamedPoint() { delete [] m_pName; } NamedPoint( const NamedPoint& other ) : m_pName( NULL ) { x = other.x; y = other.y; Construct( other.m_pName ); } NamedPoint& operator=( const NamedPoint& other ) { NamedPoint( other ).Swap( *this ); return *this; } float getX() const { return x; } float getY() const { return y; } const char* getName() const { return m_pName; } void setX( float x_ ) { x = x_; } void setY( float y_ ) { y = y_; } void setName( const char* name ) { Construct( name ); } void Swap( NamedPoint& other ) { std::swap( x, other.x ); std::swap( y, other.y ); std::swap( m_pName, other.m_pName ); } private: void Construct( const char* name ) { if ( !name ) return; size_t len = strlen( name ); char* buffer = NULL; if ( len > 0 ) { buffer = new char[ len+1 ]; strcpy( buffer, name ); } delete [] m_pName; m_pName = buffer; } }; |
Werbeanzeige