Laden...

Einstieg in C++

Erstellt von idontwantaname vor 15 Jahren Letzter Beitrag vor 15 Jahren 4.775 Views
I
idontwantaname Themenstarter:in
86 Beiträge seit 2006
vor 15 Jahren
Einstieg in C++

Hallo!

Ich programmiere schon seit einiger Zeit C# und kenne mich auch wunderbar damit aus, allerdings möchte ich mir nun auch C++ beibringen, denn hin und wieder brauche ich native Anwendungen.
Früher habe ich mit Delphi programmiert und kenne mich auch recht gut mit der Win32 API aus, nur leider weiß ich nicht so genau, wo ich anfangen soll.

Habt ihr für mich Links zu guten Einstiegstutorials oder sonst gute Ratschläge? Ich möchte noch dazu sagen, dass ich auf den Kauf von Büchern gerne verzichten würde. Habe Visual C++ 2008 Express Edition, also macht es auch nichts, wenn sich die Einführungen auf diese IDE beziehen.

mfg oli

467 Beiträge seit 2007
vor 15 Jahren

also ich möchte jetzt mal behaupten, ohne Bücher wird das nichts - diese Erfahrung habe ich zumindest bisher immer gemacht.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo zusammen,

bevor die Frage kommt 🙂 warum idontwantaname in "Buch_empfehlungen" fragt, wenn er auf Bücher verzichten will: Ich den Thread hier her verschoben, weil es in "Buch_empfehlungen" laut Forenbeschreibung nicht nur um Bücher, sondern um jegliche Informationsquellen, inbesondere auch um Tutorials geht.

herbivore

L
43 Beiträge seit 2007
vor 15 Jahren

Hallo,
Den find ich nicht schlecht, müsste als einführung eig. reichen wenn man schon grundkentnisse im programmiern hat 😉

1.044 Beiträge seit 2008
vor 15 Jahren

Hallo idontwantaname,

ich programmiere auch so wie du in C# und Delphi und lerne zur Zeit C++. Die Grundlagen, also die OOP, Datentypen, ect. sind in fast jeder Sprache ähnlich nur bis auf die Syntax. Deshalb denke ich nicht, dass man alles von Grund auf C++ lernen muss, denn das meiste ist einen sowieso schon klar. Ich könnte dir hier das Buch empfehlen: http://www.amazon.de/Einstieg-Professioneller-Programmierung-Objektorientierung-Exceptions/dp/383621072X/ . Dort ist auch eine Leseprobe vorhanden, da kannst du mal schauen wie dir das buch gefällt. Ansonten findest du im Internet noch reichlich was zum lesen, wie beispielsweise hier das: http://ladedu.com/cpp/einf .

Möchtest du in C++ oder in Visual C++ programmieren?

zero_x

799 Beiträge seit 2007
vor 15 Jahren

Das ist eine gute Frage, denn wenn du mehr in die performance-lastigeren Gebiete eintauchen willst, wirst du dich sehr ausführlich mit Pointer-Arithmetik, Speichermanagementstrategien und nach den ersten Basics die STL wäre auch nicht schlecht.

Unter MS gibts anstatt der STL, soweit ich weiß, die ATL die im Grunde das gleiche und ein bisschen mehr bietet.

Diese Themen solltest du dir jedenfalls auch zu Gemüte ziehen wenn du C++ wirklich lernen willst und nicht nur ein bischen Code runterklopfen möchtest.

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
I
idontwantaname Themenstarter:in
86 Beiträge seit 2006
vor 15 Jahren

Hi!

Danke schon mal für die Links! Werde sie mir mal ansehen 🙂

@zero_x: Naja, ich hätte geplant, Visual C++ Express zu verwenden 😉

Mfg oli

C
489 Beiträge seit 2007
vor 15 Jahren

Hallo

Möchtest du in C++ oder in Visual C++ programmieren?

Es gibt keine Sprache namens Visual C++! So nennt sich die IDE. Programmieren tut man dann mit der Sprache C++. Vielleicht nichts für den absoluten Einstieg, aber den brauchst du eh nicht, wenn du bereist C# kannst: "Scott Meyers Effektiv C++ Programmieren". Das Wichtigste: Verwende viel weniger new als bei c#.

chrische

1.044 Beiträge seit 2008
vor 15 Jahren

Hallo chrische5,

ich meinte damit C++/CLI.

zero_x

5.941 Beiträge seit 2005
vor 15 Jahren

Hallo chrische5

Das Wichtigste: Verwende viel weniger new als bei c#.

Wieso?

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

1.044 Beiträge seit 2008
vor 15 Jahren

Hallo Peter Bucher,

so direkt kann man das nicht sagen, ob man in C# mehr new als in C++ verwendet.

zero_x

P.S.: http://de.wikibooks.org/wiki/C%2B%2B-Programmierung:_Speicherverwaltung

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Peter Bucher,

vermutlich, weil in C++ die Variablen direkt die Objektdaten enthalten und keine Referenzen (außer man deklariert eine Variable ausdrücklich als Pointer oder Referenz). Wenn man eine lokale Variable deklariert, hat man also nicht nur eine Variable, sondern schon ein Objekt. Das hat zwar den Vorteil, dass die Lebensdauer des Objekts im vorhinein bekannt ist (es lebt nur solange die Methode noch nicht verlassen ist) und entsprechend beim Verlassen der Methode der Destruktor für das Objekt aufgerufen werden kann. Man kann damit so lustige Sachen machen wie "Resource Acquisition Is Initialization", aber an sich ist der Ansatz von C#, das Variablen immer Referenzen sind (außer bei Werttypen), viel besser und sauberer. Ich würde daher auch in C++ empfehlen, alle (Objekt-)Variablen als Referenz (oder Pointer) zu deklarieren und entsprechend genauso oft new zu verwenden wie in C#. Leider muss man sich in C++ dann selber um die Speicherverwaltung kümmern.

herbivore

C
489 Beiträge seit 2007
vor 15 Jahren

Hallo

@zero_x: Dann verwende doch den Namen, den du meinst und nicht den einer IDE. Das wird sehr häufig verwechselt udn deshalb sollte man da sehr genau sein.

@all: Mein Satz war etwas zugespitzt formuliert. In C++ ist es einfach unüblich alle Variablen mittels new im Heap zu haben, sondern man speichert lokale Variablen besser im stack damit der C'tor automatisch aufgerufen werden kann und keine Speicherlöcher entstehen.

chrische

C
401 Beiträge seit 2007
vor 15 Jahren

Hallo Peter Bucher,

vermutlich, weil in C++ die Variablen direkt die Objektdaten enthalten und keine Referenzen (außer man deklariert eine Variable ausdrücklich als Pointer oder Referenz). Wenn man eine lokale Variable deklariert, hat man also nicht nur eine Variable, sondern schon ein Objekt. Das hat zwar den Vorteil, dass die Lebensdauer des Objekts im vorhinein bekannt ist (es lebt nur solange die Methode noch nicht verlassen ist) und entsprechend beim Verlassen der Methode der Destruktor für das Objekt aufgerufen werden kann. Man kann damit so lustige Sachen machen wie "Resource Acquisition Is Initialization", aber an sich ist der Ansatz von C#, das Variablen immer Referenzen sind (außer bei Werttypen), viel besser und sauberer. Ich würde daher auch in C++ empfehlen, alle (Objekt-)Variablen als Referenz (oder Pointer) zu deklarieren und entsprechend genauso oft new zu verwenden wie in C#. Leider muss man sich in C++ dann selber um die Speicherverwaltung kümmern.

herbivore

Da kann ich herbivore nur zustimmen.

Es gibt inzwischen aber auch gute Frameworks, die sich um die Speicherverwaltung (wenn auch nur teilweise) kümmern. Qt ist ein gutes Beispiel. Aber natürlich sollte man dafür erstmal C++ lernen.